我一直在使用Pythonmock我的测试用例的模块。我经常用以下内容装饰我的测试用例@patch('my_method')
装饰师。然后在测试用例的主体中,我设置了.return_value
属性或.side_effect
修补方法上的属性来模拟其行为。同样在测试用例中,我检查是否调用了修补方法.assert_called_once()
。这很好用。没问题。例子:
from mock import patch
@patch('my_method')
def test_case_1(self, mock_my_method):
mock_my_method.return_value = None
# Do some testing here
mock_my_method.assert_called_once()
现在我想做一些稍微不同的事情:我只想检查修补的方法是否被调用一次(通过使用.assert_called_once()
. However,我不想改变方法的行为,也不想指定一个假的返回值。我怎样才能做到这一点?
如果你想使用patch
只是为了它的调用记录功能,而不模拟原始函数的行为,然后将原始函数指定为side_effect
模拟的:
@patch('my_function', side_effect=my_function)
...
The side_effect
名称具有误导性。如果一个模拟有side_effect函数,调用模拟将调用side_effect
并返回或提高任何side_effect
回报或加薪。使用原始函数作为side_effect
意味着我们得到了原始函数的行为。 (side_effect
可以是除函数之外的其他一些东西,但我们在这里不需要该功能。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)