Nous utilisons Mock pour python depuis un certain temps.
Maintenant, nous avons une situation dans laquelle nous voulons nous moquer d'une fonction
def foo(self, my_param):
#do something here, assign something to my_result
return my_result
Normalement, la façon de se moquer de cela serait (en supposant que foo fasse partie d'un objet)
self.foo = MagicMock(return_value="mocked!")
Même si j'appelle foo () plusieurs fois, je peux utiliser
self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"])
Maintenant, je suis confronté à une situation dans laquelle je souhaite renvoyer une valeur fixe lorsque le paramètre d'entrée a une valeur particulière. Donc si disons que "mon_param" est égal à "quelque chose" alors je veux retourner "mon_cool_mock"
Cela semble être disponible sur mockito pour python
when(dummy).foo("something").thenReturn("my_cool_mock")
J'ai cherché comment réaliser la même chose avec Mock sans succès?
Des idées?
monkeypatch
. Monkeypatch est plus destiné à "remplacer cette fonction pour des raisons de test", alors que Mock est ce que vous utilisez lorsque vous souhaitez également vérifier mock_calls
ou faire des affirmations sur ce avec quoi il a été appelé, etc. Il y a une place pour les deux, et j'utilise souvent les deux à des moments différents dans un fichier de test donné.