我想断言 Python 类中的一个类方法使用一组参数调用另一个类方法。我希望模拟的类方法是“规范的”,因此它会检测是否使用错误数量的参数调用它。
当我使用 修补类方法patch.object(.., autospec=True, ..)
时,类方法被替换为 aNonCallableMagicMock
并在我尝试调用它时引发错误。
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
当它所属的类没有被模拟时,我怎样才能得到一个规范的模拟?