Estamos usando o Mock para python há um tempo.
Agora, temos uma situação em que queremos zombar de uma função
def foo(self, my_param):
#do something here, assign something to my_result
return my_result
Normalmente, a maneira de zombar disso seria (assumindo que parte de um objeto)
self.foo = MagicMock(return_value="mocked!")
Mesmo se eu chamar foo () algumas vezes, eu posso usar
self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"])
Agora, estou enfrentando uma situação na qual desejo retornar um valor fixo quando o parâmetro de entrada tiver um valor específico. Então, se vamos dizer "my_param" é igual a "alguma coisa", quero retornar "my_cool_mock"
Parece estar disponível no mockito para python
when(dummy).foo("something").thenReturn("my_cool_mock")
Estive pesquisando sobre como conseguir o mesmo com Mock sem sucesso?
Alguma ideia?
monkeypatch
. O Monkeypatch é mais para "substituir essa função para fins de teste", enquanto o Mock é o que você usa quando também deseja verificar mock_calls
ou fazer afirmações sobre como foi chamado e assim por diante. Há um lugar para ambos, e geralmente os uso em momentos diferentes em um determinado arquivo de teste.