Pythonのunittestモジュールには、テスト対象のメソッドや関数の呼び出しを監視するためのspyという機能があります。spyを使うと、モック対象の振る舞いをそのままに、呼び出し回数や引数、返り値のみをテストで確認することができます。

spyの基本的な使い方は次の通りです。

from unittest.mock import MagicMock

def spy(self, obj: object, name: str) -> unittest.mock.MagicMock:
    """Create a spy of method. It will run method normally, but it is now possible to use `mock` call features with it, like call count."""
    # spyの作成
    spy = mocker.spy(obj, name)
    # メソッドの呼び出し
    obj.name()
    # 呼び出しの確認
    assert spy.call_count == 1

このコードでは、mocker.spy(obj, name)を使ってspyを作成しています。ここで、objはspyを作成したいオブジェクト、nameはそのオブジェクトのメソッド名です。spyを作成した後、obj.name()でメソッドを呼び出し、spy.call_countでその呼び出し回数を確認しています。

spyは、テスト対象のメソッドがどのように呼び出されたかを詳細に確認するための強力なツールです。しかし、その強力さゆえに、適切に使わなければテストの可読性や保守性を損なう可能性もあります。ですので、spyを使う際にはその使い方をよく理解し、適切に使うように心掛けましょう。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です