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_callso 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.