Мы использовали Mock для Python некоторое время.
Теперь у нас есть ситуация, в которой мы хотим смоделировать функцию
def foo(self, my_param):
#do something here, assign something to my_result
return my_result
Обычно, способ посмеяться над этим будет (при условии, что foo является частью объекта)
self.foo = MagicMock(return_value="mocked!")
Даже если я вызываю foo () пару раз, я могу использовать
self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"])
Теперь я сталкиваюсь с ситуацией, в которой я хочу вернуть фиксированное значение, когда входной параметр имеет конкретное значение. Итак, если, скажем, «my_param» равно «что-то», то я хочу вернуть «my_cool_mock»
Похоже, это доступно на mockito для python
when(dummy).foo("something").thenReturn("my_cool_mock")
Я искал, как добиться того же с Mock без успеха?
Любые идеи?
monkeypatch
. Monkeypatch больше подходит для «замены этой функции ради тестирования», тогда как Mock - это то, что вы используете, когда вы также хотите проверить mock_calls
или сделать утверждения о том, с чем она была вызвана, и так далее. Есть место для обоих, и я часто использую оба в разное время в данном тестовом файле.