我需要在子类中重新定义MagicMock's
魔术方法,然后使用子类进行测试,所以我尝试过:
from unittest.mock import MagicMock
class MockForTest(MagicMock):
def __lt__(self):
return self
t1 = MockForTest()
print(t1.__lt__()) # prints NotImplemented
但为什么NotImplemented
?我知道我能做到:
class A():
def __lt__(self):
return NotImplemented
class B(A):
def __lt__(self):
return self
b = B()
print(b.__lt__()) # prints <__main__.B object at 0x000001D6EE77B2B0>
那么,我无法重新定义MagicMock
的魔法?
答案 0 :(得分:0)
您可以使用
t1.__lt__.return_value = t1
从https://github.com/python/cpython/blob/4002d5dbf4c058bbf2462f9f5dea057956d1caff/Lib/unittest/mock.py#L1834 MagicMixin
中我可以理解,删除所有其他魔术方法。