方法命名空间中的mock全局对象

时间:2014-10-12 09:02:33

标签: python unit-testing mocking python-mock

是否可以在不同模块的特定方法中模拟全局对象,例如导入的模块?

示例:

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()。当然我可以使用装饰器,但是我想从不同的模块中修补。

1 个答案:

答案 0 :(得分:1)

您无法修补some_module.do_something()仅限于MyClass().a_method(),没有。

您通常会选择及时来修补时间。仅在调用MyClass().a_method()时应用修补程序,并确保在调用MyClass().b_method()之前再次撤消修补程序。

一个好的单元测试已经确保您只需 a_method() 。如果a_method()未进行测试但被 的其他代码使用,则直接修补a_method()