Pythonのunittestモジュールは、コードのテストを行うための強力なツールです。その中でも、patch
関数は特に便利で、テスト対象のコード内で呼び出される関数やメソッドを一時的に別のもの(通常はモックオブジェクト)に置き換えることができます。
Patchの基本的な使い方
from unittest.mock import patch
@patch('module.Class.method')
def test_method(self, mock_method):
# テストコード
上記のコードでは、module.Class.method
を指定してpatch
デコレータを使用しています。これにより、module.Class.method
はテスト中にmock_method
に置き換えられます。
Patchと戻り値
patch
を使用すると、モック化したメソッドの戻り値を自由に設定することができます。これは、テストを行う際に特定の戻り値を模擬するために非常に便利です。
from unittest.mock import patch
@patch('module.Class.method')
def test_method(self, mock_method):
mock_method.return_value = 'return_value'
# テストコード
上記のコードでは、mock_method
の戻り値を'return_value'
に設定しています。
Patchとside_effect
patch
のside_effect
属性を使用すると、モック化したメソッドが呼び出されたときに特定の例外を発生させることができます。
from unittest.mock import patch
@patch('module.Class.method')
def test_method(self, mock_method):
mock_method.side_effect = Exception('error message')
# テストコード
上記のコードでは、mock_method
が呼び出されるとException('error message')
が発生します。
以上がPythonのunittestモジュールのpatch
関数の基本的な使い方です。これらのテクニックを活用することで、より柔軟で効率的なテストコードを書くことができます。.