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

Monkey patching a class in a function that is called from a child method (Python)

假设我有这种情况:

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 来模拟消息 class。但是现在,我从另一个模块调用 class,我不不知道如何指定 Messages.show 调用不应该完成(原因是它们访问 Gui 并且在测试环境中不起作用)。假设我无法修改 module2.py。

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

import module2

module2.Messages = ...