如何在 pytest 中将单元测试和集成测试分开

2024-05-20

根据维基百科 https://en.wikipedia.org/wiki/Unit_testing#Description和各种articles https://techbeacon.com/devops/6-best-practices-integration-testing-continuous-integration最佳实践是将测试分为单元测试(首先运行)和集成测试(第二次运行),其中单元测试通常非常快,应该在 CI 环境中的每个构建中运行,但是集成测试需要更长的时间来运行,并且应该更多的是日常跑步。

有没有办法在 pytest 中划分这些?大多数项目似乎没有多个测试文件夹,所以有没有办法确保我根据情况(CI 与每日构建)只运行单元、集成或两者?在计算测试覆盖率时,我假设我必须运行两者。

我是否以正确的方式尝试将测试分为这些类别?有没有一个很好的例子来说明一个项目已经做到了这一点?


你也可以结构上独立的单元测试和集成测试到特定目录。这是来自 A. Shaw 的示例文件结构article https://realpython.com/python-testing/#writing-integration-tests Python 测试入门:

通过结构性方法,您可以:

  1. 不需要手动标记各种测试的属性或@pytest.mark.
  2. 不限于特定的测试运行程序。请参阅下面的示例。

Examples

在这里,我们仅在集成测试上运行各种测试运行程序。查看示例project/上图目录。

With unittest来自标准库:

λ python -m unittest discover -s tests/integration

With nose:

λ nose tests/integration

With pytest https://docs.pytest.org/en/latest/usage.html#specifying-tests-selecting-tests:

λ pytest tests/integration

显式调用测试运行器tests/运行所有测试的目录:

λ pytest tests/

或者,许多测试运行程序都有自动测试发现机制,可以在子目录中查找测试。

λ cd ..
λ pytest project/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 pytest 中将单元测试和集成测试分开 的相关文章

随机推荐