猴子在从子方法调用的函数中修补 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 = ...
假设我有这种情况:
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 = ...