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

2024-04-25 07:56:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

现在我有了这样一个脚本:

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

现在在上面的单元测试中,我想修补MyClass,因此MyClass的任何对象都将为其a._value()返回XYZ。因此,我:

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

此修补程序将导致MyClass.a_value()返回True,但是MyClass的任何对象仍然没有定义_值。我能做些什么来纠正这个问题


Tags: 模块对象self脚本true定义initvalue
1条回答
网友
1楼 · 发布于 2024-04-25 07:56:03

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

相关问题 更多 >