【发布时间】:2015-11-07 17:09:00
【问题描述】:
我正在使用 python 的 unittest.mock 在 Django 应用程序中进行一些测试。我想检查一个类是否被调用,以及它的实例上的一个方法是否也被调用。
例如,给定这个简化的示例代码:
# In project/app.py
def do_something():
obj = MyClass(name='bob')
return obj.my_method(num=10)
这个测试来检查发生了什么:
# In tests/test_stuff.py
@patch('project.app.MyClass')
def test_it(self, my_class):
do_something()
my_class.assert_called_once_with(name='bob')
my_class.my_method.assert_called_once_with(num=10)
测试成功说my_class 被调用,但说my_class.my_method 没有被调用。我知道我错过了一些东西 - 在模拟类上模拟一个方法? - 但我不确定是什么或如何使它工作。
【问题讨论】:
标签: python unit-testing mocking