При написании тестов Python с библиотекой mock
я часто получаю «с какими аргументами вызывается метод», например:
from __future__ import print_function
import mock
m = mock.MagicMock(side_effect=lambda x: x * x)
m(4)
print("m called with: ", m.call_args_list)
(это напечатает m called with: [call(4)]
). Вопрос. Есть ли способ получить возвращаемое значение (в данном случае 16
)?
Подробности. В моем конкретном сценарии я хочу использовать side_effect для возврата подложного объекта: важно изучить этот объект, чтобы увидеть, что на нем вызывается. Например, «настоящий код» (нетестовый код) может написать:
myobj = m(4)
myobj.foo()
Использование side_effect
кажется удобным способом вернуть новые подмоки объектов, но также сохранить call_args_list
. Однако не похоже, что MagicMock
хранит возвращаемые значения из функции side_effect
... я ошибаюсь?