我想断言Python类中的一个类方法调用另一个具有特定参数集的类方法。我希望mocked类方法被“规范化”,这样它就可以检测是否使用错误数量的参数调用它。在
当我使用patch.object(.., autospec=True, ..)
修补classmethod时,classmethod将被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__)
产生输出:
^{pr2}$当_internal_classmethod
所属的类未被模拟时,如何为_internal_classmethod
获取规范化的mock?在
有一个未完成的错误报告(google code link和python bug tracker link)来解决这个问题。在合并修复程序之前,您可以尝试下面的方法,这对我[在
2.7
上有效,但我认为它在3.x
中也可以工作。在在monkeypatch之后,您应该能够正常使用
mock.patch
,并且正确地修补了静态和类方法。在使用
spec
代替autospec
,并直接设置它。在给了我
^{pr2}$用于输出。在
相关问题 更多 >
编程相关推荐