Hemos estado usando Mock para Python por un tiempo.
Ahora, tenemos una situación en la que queremos burlarnos de una función
def foo(self, my_param):
#do something here, assign something to my_result
return my_result
Normalmente, la forma de burlarse de esto sería (suponiendo que foo sea parte de un objeto)
self.foo = MagicMock(return_value="mocked!")
Incluso, si llamo a foo () un par de veces, puedo usar
self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"])
Ahora, me enfrento a una situación en la que quiero devolver un valor fijo cuando el parámetro de entrada tiene un valor particular. Entonces, si digamos "my_param" es igual a "algo", entonces quiero devolver "my_cool_mock"
Esto parece estar disponible en mockito para python
when(dummy).foo("something").thenReturn("my_cool_mock")
¿He estado buscando cómo lograr lo mismo con Mock sin éxito?
¿Algunas ideas?
monkeypatch
. Monkeypatch es más para "reemplazar esta función en aras de la prueba", mientras que Mock es lo que usa cuando también desea verificar mock_calls
o hacer afirmaciones sobre cómo se llamó y así sucesivamente. Hay un lugar para ambos, y a menudo uso ambos en diferentes momentos en un archivo de prueba dado.