[英]mock global object in method namespace
是否可以通过其他模块中的特定方法模拟全局对象(例如导入的模块)?
例:
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()
。 我当然可以使用装饰器,但是我想从其他模块进行修补。
你不能修补了some_module.do_something()
仅限于MyClass().a_method()
没有。
您通常会在时间选择的时候,而不是修补。 仅在调用MyClass().a_method()
时应用补丁,并确保在调用MyClass().b_method()
之前再次撤消补丁。
一个好的单元测试已确保您测试刚刚 a_method()
反正 。 如果a_method()
不在测试中,而是由其他代码所使用 ,则直接修补a_method()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.