Python 模拟/修补具有不同功能的对象

Python 模拟/修补具有不同功能的对象,python,unit-testing,mocking,patch,Python,Unit Testing,Mocking,Patch,如果我有 def foo: return a() def bar: someObject = someObjectFactory() if someObject.field: #do something 如果我想在调用foo时更改someObject.field的值,该怎么办。 Foo是一个测试,基本上我希望能够更改someObject.field来测试不同的值 编辑:bar和foo在不同的文件中只需在bar()外部创建类,以便foo()可以修改它 s

如果我有

def foo:
    return a()

def bar:
    someObject = someObjectFactory()
    if someObject.field: 
       #do something
如果我想在调用foo时更改someObject.field的值,该怎么办。 Foo是一个测试,基本上我希望能够更改someObject.field来测试不同的值

编辑:bar和foo在不同的文件中

只需在
bar()
外部创建类,以便
foo()
可以修改它

someObject = someObjectFactory()

def foo():
    someObject.field = "something"
    return a()

def bar():
    if someObject.field:
        # code

由于您是从someObjectFactory获取someObject,一个可能的解决方案是(对于单元测试场景)修改someObjectFactory/提供someObjectFactory的测试特定实现,以便它在每次测试bar时返回,具有测试所需属性的对象。

如果bar和foo在不同的文件中会怎样?@Articuno这不是一个真正的问题,但您应该编写一个简单的可运行示例。从你发布的代码来看,foo和bar之间的关系并不清楚。尽管如此,我还是试图找到一个有用的答案。我强烈怀疑你们需要看一下框架,花些时间阅读这一章。