Je suis en train d'essayer de simuler
une fonction (qui retourne un contenu externe) en utilisant le module mock de python.
J'ai des difficultés à simuler des fonctions qui sont importées dans un module.
Par exemple, dans util.py
j'ai
def get_content():
return "chose"
Je veux simuler util.get_content
de sorte qu'elle renvoie autre chose.
Je fais ceci :
util.get_content=Mock(return_value="chose simulée")
Si get_content
est invoquée à l'intérieur d'un autre module, il semble jamais renvoyer l'objet simulé. Est-ce que j'oublie quelque chose en terme d'utilisation de Mock
?
Notez que si j'invoque ce qui suit, les choses fonctionnent correctement :
>>> util.get_content=Mock(return_value="chose simulée")
>>> util.get_content()
"chose simulée"
Cependant, si get_content
est appelée depuis un autre module, il invoque la fonction originale au lieu de la version simulée :
>>> from mymodule import MyObj
>>> util.get_content=Mock(return_value="chose simulée")
>>> m=MyObj()
>>> m.func()
"chose"
Contenu de mymodule.py
from util import get_content
class MyObj:
def func():
get_content()
Donc ma question serait - comment puis-je invoquer la version simulée d'une fonction depuis l'intérieur d'un module que j'appelle ?
Il semble que le from module import function
soit à blâmer ici, en ce sens qu'il ne pointe pas vers la fonction simulée.