【问题标题】:In Python, how to mark some tests to only execute when a condition is met在 Python 中,如何将某些测试标记为仅在满足条件时执行
【发布时间】:2021-09-02 14:26:54
【问题描述】:

我正在开发一个小型 Python 程序。它有一个功能,必须打开一个 Word 文件并从中读取一些信息,并通过 win32com 调用实际的 Word 应用程序。所以这个函数的执行取决于机器上安装的Word。

鉴于项目的规模和我们的资源,并且看到这是唯一必须使用外部依赖项进行测试的功能,因此创建单独的集成测试环境是不可行的。我希望 Word 阅读功能的测试与真正的单元测试一起运行。但是我们没有在所有开发机器上安装 Word,然后这些测试就会失败。

我可以通过编程测试 Word 在机器上是否可用。问题是,我能否以某种方式对测试进行注释,以便它们仅在 Word 存在时运行?

我想简单地将 if not word_discovered: pass 之类的东西放在每个测试中,但看起来它们都有效。我更喜欢一个解决方案,其中测试框架在其中打印报告这八个测试被跳过。

【问题讨论】:

    标签: python dependencies integration-testing


    【解决方案1】:

    如果您使用 pytest(我强烈推荐)运行测试,您可以使用 skipif 标记:

    @pytest.mark.skipif(not word_discovered, reason="MS Word not available")
    def test_thing():
        """test your thing"""
    

    Pytest 文档:https://docs.pytest.org/en/6.2.x/skipping.html#id1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      相关资源
      最近更新 更多