猴子修补从子方法调用的函数中的类(Python)

时间:2015-01-01 12:31:33

标签: python testing unit-testing

假设我有这种情况:

module2.py

class Bar:

    def bar():
        a = 5
        # do stuff
         Messages.show("Done")

module1.py

import module2

class Foo:

    def __init__(self):
         self.bar = module2.Bar()
    def foo(self):
        self.bar.bar()

我想测试方法Foo.foo(),但我想忽略Messages.show(“Done”),即我希望调用Messages.show函数在模拟对象上完成。如果foo正在调用Messages.show直接,我可以在foo上使用monkeypatch来模拟Messages类。但是现在,我从另一个模块调用一个类,我不知道如何指定不应该完成Messages.show调用(原因)因为他们访问Gui并且在测试环境中不起作用。)假设我无法修改module2.py。

1 个答案:

答案 0 :(得分:2)

只需覆盖module2认为Messages的内容:

import module2

module2.Messages = ...