[英]How to redefine python3 MagicMock magic method?
I need to redefine MagicMock's
magic method in the child class and then use child class for testing, so I've tried: 我需要在子类中重新定义
MagicMock's
magic方法,然后使用子类进行测试,因此我尝试了:
from unittest.mock import MagicMock
class MockForTest(MagicMock):
def __lt__(self):
return self
t1 = MockForTest()
print(t1.__lt__()) # prints NotImplemented
But why NotImplemented
? 但是,为什么
NotImplemented
? I know I can do it: 我知道我可以做到:
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>
So, I can't redefine MagicMock
's magic methods? 因此,我无法重新定义
MagicMock
的魔术方法?
You can use instead 您可以改用
t1.__lt__.return_value = t1
From what I can understand from https://github.com/python/cpython/blob/4002d5dbf4c058bbf2462f9f5dea057956d1caff/Lib/unittest/mock.py#L1834 MagicMixin
remove all other magic methods. 从我从https://github.com/python/cpython/blob/4002d5dbf4c058bbf2462f9f5dea057956d1caff/Lib/unittest/mock.py#L1834可以理解的方法中,
MagicMixin
删除了所有其他魔术方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.