繁体   English   中英

在方法名称空间中模拟全局对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM