Pythonのunittest.mock
ライブラリは、テスト中にシステムの一部をモックオブジェクトに置き換えて、それらがどのように使用されたかについてアサーションを行うことができます。
unittest.mock
にはcall_args
という属性があり、これはモックオブジェクトが最後に呼び出されたときの引数を取得するために使用します。
from unittest.mock import MagicMock
mock = MagicMock()
mock('a', 'b', c='c')
args, kwargs = mock.call_args
上記のコードでは、mock
オブジェクトが('a', 'b', c='c')
という引数で呼び出されています。その後、call_args
を使用して、その呼び出しの引数を取得しています。args
は位置引数のタプルで、kwargs
はキーワード引数の辞書です。
また、call_args_list
属性を使用すると、モックオブジェクトが呼び出されたすべての引数をリストとして取得することができます。
from unittest.mock import MagicMock
mock = MagicMock()
mock('a', 'b', c='c')
mock('d', 'e', f='f')
print(mock.call_args_list)
このコードでは、mock
オブジェクトが2回呼び出されており、その両方の呼び出しの引数をcall_args_list
を使用して取得しています。
以上がPythonのunittest.mock
とcall_args
の基本的な使い方です。これらの機能を活用することで、モックオブジェクトがどのように呼び出され、どのような引数で呼び出されたかを詳細に検証することができます。