我想编写单元测试来检查是否正在调用方法。有没有办法做到这一点。或者我误解了模拟可以在这里使用的方式?通过这种方式,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的整个概念。请赐教,因为我是新手。
答案 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