Ми вже деякий час використовуємо 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
або зробити твердження про те, з чим його викликали тощо. Для обох є місце, і я часто використовую обидва в різний час у заданому тестовому файлі.