Test Django Mock-检查是否调用了函数/方法
我想检查do_a呼叫do_b。我是这样做的: 守则:Test Django Mock-检查是否调用了函数/方法,django,mocking,callable,Django,Mocking,Callable,我想检查do_a呼叫do_b。我是这样做的: 守则: def do_a(...): ... do_b(...) ... 测试: def test_do_a(self): ... with patch('...do_b', new_callable=do_nothing()) as mock_do_b: do_a(...) mock_do_b.assert_called_once_with(...
def do_a(...):
...
do_b(...)
...
测试:
def test_do_a(self):
...
with patch('...do_b', new_callable=do_nothing()) as mock_do_b:
do_a(...)
mock_do_b.assert_called_once_with(...)
什么也不做:
def do_nothing():
pass
这很好用,但我不得不使用do_nothing(),我觉得很不方便。有没有一种方法可以在没有额外无用函数do_nothing()的情况下进行相同的测试?您可以使用补丁作为装饰程序
@patch('...do_b')
def test_do_a(self, mock_do_b):
do_a(...)
mock_do_b.assert_called_once_with(...)
您可以使用lambda而不是可调用的
lambda:True
,但lambda看起来更像黑客;)是的,我也想过。我可能只是写了一个不带任何东西的补丁(…),谢谢,但这并不能消除不带任何东西()或lambda:True的需要。也许这是版本问题-只需添加相同的问题,就可以了。另外,返回\u值
而不是new\u callable
也会起作用。