【问题标题】:is there a simple way of adding __name__ to MagicMock attributes recursively有没有一种简单的方法可以递归地将 __name__ 添加到 MagicMock 属性中
【发布时间】:2021-01-05 17:39:26
【问题描述】:

声明

当我询问 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__

我要求的任何更深层次的属性当然仍然返回一个 AttributeError

问题

有没有一种简单的方法可以将 __name__ 添加到 MagicMock 的“尚未”请求的属性中??

【问题讨论】:

    标签: python mocking magicmock


    【解决方案1】:

    好的解决方案比预期的要容易

    >>> from unittest.mock import MagicMock
    
    >>> class MySpecialMagicMock(MagicMock):
    >>>     __name__ = "some value"
    
    >>> a = MySpecialMagicMock()
    
    >>> a.__name__
    some value
    
    >>> a.another_attribute.__name__    
    some value
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 2017-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多