Wir verwenden Mock seit einiger Zeit für Python.
Jetzt haben wir eine Situation, in der wir eine Funktion verspotten wollen
def foo(self, my_param):
#do something here, assign something to my_result
return my_result
Normalerweise wäre der Weg, dies zu verspotten (vorausgesetzt, foo ist Teil eines Objekts)
self.foo = MagicMock(return_value="mocked!")
Auch wenn ich foo () ein paar Mal aufrufe, kann ich verwenden
self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"])
Jetzt stehe ich vor einer Situation, in der ich einen festen Wert zurückgeben möchte, wenn der Eingabeparameter einen bestimmten Wert hat. Wenn wir also sagen, dass "my_param" gleich "etwas" ist, möchte ich "my_cool_mock" zurückgeben.
Dies scheint auf Mockito für Python verfügbar zu sein
when(dummy).foo("something").thenReturn("my_cool_mock")
Ich habe gesucht, wie ich mit Mock dasselbe erreichen kann, ohne Erfolg?
Irgendwelche Ideen?
monkeypatch
. Monkeypatch ist eher für "Ersetzen dieser Funktion zum Testen", während Mock das ist, was Sie verwenden, wenn Sie auch die Funktion überprüfen mock_calls
oder Aussagen darüber machen möchten, mit was sie aufgerufen wurde, und so weiter. Es gibt einen Platz für beide, und ich verwende beide oft zu unterschiedlichen Zeiten in einer bestimmten Testdatei.