Pythonのunittest.mock
モジュールを使用すると、テスト中に特定のメソッドや関数の戻り値を制御することができます。これは、テスト対象のコードが外部リソースや他のモジュールに依存している場合に特に役立ちます。
patch()
デコレータを使用して、特定のメソッドや関数をモックオブジェクトに置き換えることができます。そして、そのモックオブジェクトのreturn_value
属性を設定することで、モックが呼び出されたときの戻り値を制御することができます。
以下に、return_value
を使用した例を示します。
from unittest.mock import patch
def test_function():
with patch('module_to_mock.function_to_mock') as mock_function:
mock_function.return_value = 'mocked value'
# ここでmodule_to_mock.function_to_mock()を呼び出すと、'mocked value'が返されます
この例では、module_to_mock.function_to_mock()
が呼び出されると、常に'mocked value'
が返されます。
また、side_effect
属性を使用して、モックが呼び出されるたびに異なる値を返すことも可能です。
from unittest.mock import patch
def test_function():
with patch('module_to_mock.function_to_mock') as mock_function:
mock_function.side_effect = ['first value', 'second value', 'third value']
# ここでmodule_to_mock.function_to_mock()を呼び出すと、順番に'first value', 'second value', 'third value'が返されます
この例では、module_to_mock.function_to_mock()
が呼び出されるたびに、'first value'
, 'second value'
, 'third value'
の順に値が返されます。
以上がPythonのunittest.mock
モジュールのpatch()
とreturn_value
の基本的な使い方です。これらの機能を利用することで、テストをより柔軟に、かつ効率的に行うことが可能になります。