Python クラスの 1 つのクラスメソッドが、特定の引数セットを使用して別のクラスメソッドを呼び出すことを主張したいと思います。モック化されたクラスメソッドを「仕様化」したいので、間違った数の引数で呼び出されたかどうかを検出します。
を使用してクラスメソッドにパッチを適用するpatch.object(.., autospec=True, ..)
と、クラスメソッドが に置き換えられ、NonCallableMagicMock
呼び出そうとするとエラーが発生します。
from mock import patch
class A(object):
@classmethod
def api_meth(cls):
return cls._internal_classmethod(1, 2, 3)
@classmethod
def _internal_classmethod(cls, n, m, o):
return sum(n, m, o)
with patch.object(A, '_internal_classmethod') as p:
print(type(p).__name__)
with patch.object(A, '_internal_classmethod', autospec=True) as p:
print(type(p).__name__)
出力を生成します:
MagicMock
NonCallableMagicMock
_internal_classmethod
属するクラスがモックされていない場合、仕様化されたモックを取得するにはどうすればよいですか?