Test Django Mock-检查是否调用了函数/方法

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(...

我想检查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_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
也会起作用。