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之间的关系并不清楚。尽管如此,我还是试图找到一个有用的答案。我强烈怀疑你们需要看一下框架,花些时间阅读这一章。