【问题标题】:Mock class returning same value for all attributes模拟类为所有属性返回相同的值
【发布时间】:2020-09-23 09:47:14
【问题描述】:

我想模拟一个类,对于任何属性,它都应该返回相同的字符串。

c = SomeMocking(all_attributes="abc")
c.foo == "abc"
True
c.bar == "abc"
True

https://docs.python.org/3/library/unittest.mock.html 应该这样做吗?我只找到return_value 可以用于函数调用,不能用于任意属性。

【问题讨论】:

    标签: python mocking


    【解决方案1】:

    不知道是不是太简单了。但这总是会为每个属性返回相同的值:

    class A:
        def __getattribute__(self, name):
            return 'abc'
    
    print(A().foo)
    

    如果您还想在类中拥有自己的属性并且只将其用于未定义的属性,您应该使用__getattr__。您可以阅读此post 中的差异。

    这些特殊方法只是简单地模仿对具有在name 参数中给出的名称的属性的访问。

    【讨论】:

      猜你喜欢
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多