我在模块 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。我可以做什么来纠正这个问题?
最佳答案
MyClass
的对象是在调用 MyClass
时创建的。因此,您只需确保在 MyClass
的返回值上设置 a_value
即可:
@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
关于python - 如何在模拟类的对象上定义任意属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56569493/