是否可以在不同模块的特定方法中模拟全局对象,例如导入的模块?
示例:
import some_module
class MyClass():
def a_method(self):
some_module.do_something(1)
def b_method(self):
some_module.do_something(2)
我想修补some_module
以便设置do_somthing()
的返回值,但仅限a_method()
而不是b_method()
。当然我可以使用装饰器,但是我想从不同的模块中修补。
答案 0 :(得分:1)
您无法修补some_module.do_something()
仅限于MyClass().a_method()
,没有。
您通常会选择及时来修补时间。仅在调用MyClass().a_method()
时应用修补程序,并确保在调用MyClass().b_method()
之前再次撤消修补程序。
一个好的单元测试已经确保您只需 a_method()
。如果a_method()
未进行测试但被 的其他代码使用,则直接修补a_method()
。