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

标签 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 的任何对象都将为其返回“XYZa._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/

相关文章:

Python 正则表达式和在线找到的几个命名组

java - Methods.class 中的代码重用 vs 策略模式和依赖注入(inject)

c++ - 在支持 Marmalade SDK 的 Visual Studio 中进行单元测试

Angular2 组件测试 - 错误 : Can't resolve all parameters

java - 调用 FileWriter 的单元测试方法

python - 无法获取网址

python - 需要等效的函数来获取 Exchangelib Python 中的 Alias,就像 win32com 中的这个函数 (item.sender.getexchange().Alias)

python - 将 Flask 路由参数传递给装饰器

java - 使用私有(private)字段和@PostConstruct对Spring boot服务进行单元测试

.net - 模拟框架的新手