Я хочу утверждать, что один метод класса в классе Python вызывает другой метод класса с определенным набором аргументов. Я хотел бы, чтобы издевательский метод класса был «специфицирован», поэтому он определяет, вызывается ли он с неправильным количеством аргументов.
Когда я исправляю метод класса с помощью 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
, если класс, к которому он принадлежит, не является макетом?