【问题标题】:Python Unit testing script that calls some functions调用某些函数的 Python 单元测试脚本
【发布时间】:2022-01-06 16:02:35
【问题描述】:

我最终在 python 中测试了一个“自动化”脚本,基本上只是一个调用一堆函数的脚本。

我有 3 个类:class_A、class_B、class_C,每个类都有一个“运行”功能

Script.py 正在调用 class_A.run()、class_B.run、class_C.run()

我的问题是,是否有一种方法可以对 Script.py 进行单元测试,以断言我们是否调用了 3 个运行函数,而无需实际运行(通过他们的代码)它们。

我尝试修补类,我可以得到正确的断言,但运行函数仍在“运行”它们的代码。

是否有可能以某种方式模拟 class_A.run() 并断言是否被调用?

【问题讨论】:

标签: python unit-testing mocking


【解决方案1】:

您可以使用Mock patch。 MockClass 将替换您的 module.class_A 和 run-method:

from unittest.mock import patch

@patch('module.class_A', 'run')
def test(MockClass):
    Script.py  # your testfunction 
    assert MockClass.run.called  # check if module.Class_A.run() was called

【讨论】:

  • 提及:在我的例子中,A 类的路径是“python_framework.utils.Class_A”,“Script.py”的路径是“python_framework.Script”。一旦我使用“pyton_framework.Script.Class_A.run”修补了函数,一切正常。 *在我修补“python_framework.utils.Class_A.run”之前
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-13
  • 2017-05-26
  • 1970-01-01
  • 2010-11-01
  • 2010-11-23
相关资源
最近更新 更多