修补本地实例

时间:2011-10-23 17:35:29

标签: python monkeypatching

考虑我在python模块a.py中有以下代码:

def func():
    obj = Obj()
    # Some code that uses obj

有没有办法让补丁obj成为函数参数?

原因:在代码本身的上下文中,它不应该是一个参数,但是在使用代码的测试和系统模拟的上下文中,补丁是合理的。此外,在各种情况下,我可能需要修补不同的本地对象,并将所有这些对象放置为参数将是乏味的。

1 个答案:

答案 0 :(得分:2)

# if func() is defined in `a.py`
import a

oldObj, a.Obj = a.Obj, MockObj
a.func()
a.Obj = oldObj