有没有一种简单的方法可以递归地将 __name__ 添加到 MagicMock 属性
is there a simple way of adding __name__ to MagicMock attributes recursively
声明
当我询问 MagicMock 对象的 __name__ 时,我得到一个 AttributeError => 我认为这就是 MagicMock 的工作方式。
from mock import MagicMock
a = MagicMock()
a.__name__
-------------------------------------------------------------------
AttributeError Traceback (most recent call last)
----> 1 a.__name__
这很容易解决:
a.__name__ = "some_name"
但是
a.some_attr.__name__
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
----> 1 a.some_attr.__name__
我当然会问任何更深层次的属性 returns 一个 AttributeError
问题
有没有一种简单的方法可以将 __name__ 添加到 MagicMock 的“尚未”请求的属性中??
好的解决方案比预期的要容易
>>> from unittest.mock import MagicMock
>>> class MySpecialMagicMock(MagicMock):
>>> __name__ = "some value"
>>> a = MySpecialMagicMock()
>>> a.__name__
some value
>>> a.another_attribute.__name__
some value
声明
当我询问 MagicMock 对象的 __name__ 时,我得到一个 AttributeError => 我认为这就是 MagicMock 的工作方式。
from mock import MagicMock
a = MagicMock()
a.__name__
-------------------------------------------------------------------
AttributeError Traceback (most recent call last)
----> 1 a.__name__
这很容易解决:
a.__name__ = "some_name"
但是
a.some_attr.__name__
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
----> 1 a.some_attr.__name__
我当然会问任何更深层次的属性 returns 一个 AttributeError
问题
有没有一种简单的方法可以将 __name__ 添加到 MagicMock 的“尚未”请求的属性中??
好的解决方案比预期的要容易
>>> from unittest.mock import MagicMock
>>> class MySpecialMagicMock(MagicMock):
>>> __name__ = "some value"
>>> a = MySpecialMagicMock()
>>> a.__name__
some value
>>> a.another_attribute.__name__
some value