考虑我在python模块a.py
中有以下代码:
def func():
obj = Obj()
# Some code that uses obj
有没有办法让补丁obj
成为函数参数?
原因:在代码本身的上下文中,它不应该是一个参数,但是在使用代码的测试和系统模拟的上下文中,补丁是合理的。此外,在各种情况下,我可能需要修补不同的本地对象,并将所有这些对象放置为参数将是乏味的。
答案 0 :(得分:2)
# if func() is defined in `a.py`
import a
oldObj, a.Obj = a.Obj, MockObj
a.func()
a.Obj = oldObj