如何测试是否使用pytest调用方法

时间:2017-06-24 15:43:22

标签: python django mocking pytest pytest-django

我想编写单元测试来检查是否正在调用方法。有没有办法做到这一点。或者我误解了模拟可以在这里使用的方式?通过这种方式,mocked_method总是被调用但没有任何args。

@(pytest.parameterize)
def test(jsonrpc_proxy):
    jsonrpc_proxy.method1_call()
    # Method 1 should not call method 2
    with mock.patch('method2') as mocked_method:
        assert ((args),) not in mocked_track.call_args_list

    # do something 
    jsonrpc_proxy.method1_call()
    # Method 1 should call method 2
    with mock.patch('method2') as mocked_method:
        assert ((args),) in mocked_track.call_args_list
PS:我在发布之前已经检查了与之相关的其他问题,但我认为我误解了关于我们如何在这种场景中使用mock的整个概念。请赐教,因为我是新手。

1 个答案:

答案 0 :(得分:2)

在修补method1时,您需要致电method2,而不是在此之前。 尝试在with语句中移动调用:

with mock.patch('method2') as mocked_method:
    jsonrpc_proxy.method1_call()
    assert ((args),) not in mocked_track.call_args_list