Abbiamo usato Mock per Python per un po '.
Ora, abbiamo una situazione in cui vogliamo deridere una funzione
def foo(self, my_param):
#do something here, assign something to my_result
return my_result
Normalmente, il modo di deridere questo sarebbe (supponendo che foo faccia parte di un oggetto)
self.foo = MagicMock(return_value="mocked!")
Anche se chiamo foo () un paio di volte che posso usare
self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"])
Ora, sto affrontando una situazione in cui voglio restituire un valore fisso quando il parametro di input ha un valore particolare. Quindi, se diciamo "my_param" è uguale a "qualcosa", allora voglio restituire "my_cool_mock"
Questo sembra essere disponibile su Mockito per Python
when(dummy).foo("something").thenReturn("my_cool_mock")
Ho cercato come ottenere lo stesso con Mock senza successo?
Qualche idea?
monkeypatch
. Monkeypatch è più per "sostituire questa funzione per motivi di test", mentre Mock è ciò che usi quando vuoi anche controllare mock_calls
o fare affermazioni su ciò che è stato chiamato e così via. C'è un posto per entrambi e li uso spesso in momenti diversi in un determinato file di test.