如何在模拟类的对象上定义任意属性?

时间:2019-06-12 19:52:38

标签: python unit-testing mocking

我在模块abc.myModule中定义了一个类:

Class MyClass:
  def __init__(self, a):
     self.a_value = a

现在,我的脚本可以:

c = MyClass('a')
print c.a_value

现在在上面的单元测试中,我想修补MyClass,以便MyClass的任何对象都将为其XYZ返回'a._value()'。所以我这样做:

@patch('abc.myModule.MyClass, a_value=True) 

此补丁将使MyClass返回.a_value()为True,但是MyClass的任何对象仍未定义a_value。我该怎么做才能纠正这个问题?

1 个答案:

答案 0 :(得分:1)

调用MyClass时创建MyClass的对象。因此,您只需要确保在a_value的返回值上设置MyClass

@patch('abc.myModule.MyClass', a_value=True) 
def test_something(self, mock_myclass):
    mock_myclass.return_value.a_value = True  # Ensure a_value is set for objects