在使用库编写 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()
Usingside_effect
似乎是一种返回新子模拟对象的便捷方式,但也可以保留call_args_list
. 但是,商店似乎没有MagicMock
从side_effect
函数返回值……我错了吗?