【发布时间】:2013-08-02 23:31:22
【问题描述】:
在使用mock 库编写 Python 测试时,我经常会得到这样的“调用方法的参数”,
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 函数的返回值……我错了吗?
【问题讨论】:
标签: python unit-testing mocking python-mock