モックメソッドへの連続呼び出しをアサートする 質問する

モックメソッドへの連続呼び出しをアサートする 質問する

モックには役に立つassert_called_with()方法ただし、私の理解では、これはメソッドの最後の
呼び出しのみをチェックします。モック メソッドを 3 回連続して呼び出すコードがあり、そのたびに異なるパラメーターを使用する場合、これらの 3 つの呼び出しを特定のパラメーターでアサートするにはどうすればよいでしょうか。

ベストアンサー1

assert_has_callsこの問題に対する別のアプローチです。

ドキュメントより:

assert_has_calls (呼び出し、any_order=False)

指定された呼び出しでモックが呼び出されたことを確認します。呼び出しについては、mock_calls リストがチェックされます。

any_order が False (デフォルト) の場合、呼び出しは連続して行われる必要があります。指定された呼び出しの前または後に追加の呼び出しが存在する可能性があります。

any_order が True の場合、呼び出しは任意の順序で行うことができますが、すべてが mock_calls に表示される必要があります。

例:

>>> from unittest.mock import call, Mock
>>> mock = Mock(return_value=None)
>>> mock(1)
>>> mock(2)
>>> mock(3)
>>> mock(4)
>>> calls = [call(2), call(3)]
>>> mock.assert_has_calls(calls)
>>> calls = [call(4), call(2), call(3)]
>>> mock.assert_has_calls(calls, any_order=True)

ソース:https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.assert_has_calls

おすすめ記事