【发布时间】:2016-03-04 18:55:09
【问题描述】:
使用 Python 2.7 和模拟库
如何使用 mock 测试某些已修补的对象是否已使用某些特定参数初始化?
这里有一些示例代码和伪代码:
unittest.py:
import mock
@mock.patch('mylib.SomeObject')
def test_mytest(self, mock_someobject):
test1 = mock_someobject.return_value
test1 = method_inside_someobject.side_effect = ['something']
mylib.method_to_test()
# How can I assert that method_to_test instanced SomeObject with certain arguments?
# I further test things with that method_inside_someobject call, no problems there...
mylib.py:
from someobjectmodule import SomeObject
def method_to_test():
obj = SomeObject(arg1=val1, arg2=val2, arg3=val3)
obj.method_inside_someobject()
那么,我如何测试 SomeObject 是用 arg1=val1, arg2=val2, arg3=val3 实例化的?
【问题讨论】:
-
你不就
assert_called_with吗? -
让我编辑问题以显示一些示例代码。我尝试过 assert_call_with 但没有得到任何结果
-
那里... @mgilson 我添加了一些示例代码。谢谢!
-
什么是
method_inside_someobject?你的意思是用test1代替吗?为什么要重新绑定test1? -
另外,您修补
SomeObject的方式是正确的,这意味着您肯定应该看到SomeObject.assert_called_with()工作。您能否确保您的minimal reproducible example 正确反映了您的情况并且有效?
标签: python unit-testing mocking