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

标签 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。

最佳答案

只需覆盖 module2 认为 Messages 是什么:

import module2

module2.Messages = ...

关于python - 猴子修补从子方法调用的函数中的类 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27730823/

相关文章:

javascript - 构建接受文件上传并在其上运行测试的 Node JS 应用程序

scala - 为什么我的 Scalacheck/Scalatest PropertyCheckConfig 被忽略了?

testing - 当一个具体方法的签名引用另一个具体类型而不是它的接口(interface)时,我如何模拟多个类型?

unit-testing - Windows Phone 7 的单元测试 - 应用程序无法正确启动

python - 你能在 Pandas 中拆分日期时间月份吗?

python - 如何在python中设置多个循环 'for'作为函数的参数来找到将一个句点切成n份的所有可能性?

python - 如何在Python中的字典中追加列表?

Python 3.5 Tkinter如何将字典保存到文件

php - 我如何在 laravel 中编写函数返回 json 数据的测试

unit-testing - 单元测试 - 困惑