3

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

@(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:在发布之前,我已经检查了与它相关的其他问题,但我认为我误解了我们如何在这种情况下使用模拟的整个概念。请赐教,因为我是新手。

4

1 回答 1

3

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

with mock.patch('method2') as mocked_method:
    jsonrpc_proxy.method1_call()
    assert ((args),) not in mocked_track.call_args_list
于 2017-06-24T16:29:44.460 回答