2017-06-24 60 views
-1

メソッドが呼び出されているかどうかを確認するための単体テストを書きたいと思います。それを行う方法はありますか?あるいは、ここでモックを使う方法を誤解していますか?このように、mocked_methodは常に呼び出されますが、引数は一切ありません。pytestを使用してメソッドが呼び出されたかどうかをテストする方法

@(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:私は投稿する前に、それに関連する他の質問を確認しているが、私は、我々はこのようなシナリオでモックを使用する方法についての全体の概念を誤解していと思います。私はこれを初めて知っているので、私に教えてください。

答えて

1

method2にパッチを適用する場合は、その前にはmethod1に電話する必要があります。 with文の中で呼び出しを移動してみてください。

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

ありがとうございました。それは完璧だった! –

+0

通常、 'mocked_method.assert_called_with(arguments ...)'で定義された呼び出しをアサートすることをお勧めします。 –

関連する問題