我们是 pytest 的忠实粉丝,并将其用作我们工作和开源项目的默认 Python 测试工具。在本月的 Python 专栏中,我们将分享我们喜爱 pytest 的原因,以及一些使使用 pytest 进行测试变得如此有趣的插件。
什么是 pytest?
正如该工具的网站所说:“pytest 框架使编写小型测试变得容易,并且可以扩展以支持应用程序和库的复杂功能测试。”
Pytest 允许您在任何名为 test_*.py
的文件中定义您的测试,并将其定义为以 test_*
开头的函数。 然后,当您在控制台中运行 pytest
时,Pytest 将找到您整个项目中的所有测试并自动运行它们。 Pytest 接受 标志和参数,这些标志和参数可以更改测试运行程序停止的时间、结果的输出方式、运行哪些测试以及输出中包含哪些信息。 它还包含一个 set_trace()
函数,可以输入到您的测试中;这将暂停您的测试,并允许您与变量交互,或以其他方式在控制台中“四处搜寻”以调试您的项目。
pytest 最棒的方面之一是其强大的插件生态系统。 由于 pytest 是一个如此流行的测试库,因此多年来创建了许多插件来扩展、自定义和增强其功能。 以下八个插件是我们最喜欢的。
八大插件
1. pytest-sugar
pytest-sugar
更改了 pytest 的默认外观,添加了一个进度条,并立即显示失败的测试。 它不需要任何配置;只需 pip install pytest-sugar
,使用 pytest
运行您的测试,并享受更漂亮、更有用的输出。
2. pytest-cov
pytest-cov
添加了对 pytest 的覆盖率支持,以显示哪些代码行已被测试,哪些代码行尚未被测试。 它还将包括您的项目的测试覆盖率百分比。
3. pytest-picked
pytest-picked
运行基于您已修改但尚未提交到 git
的代码的测试。 安装该库并使用 pytest --picked
运行您的测试,以仅测试自上次提交以来已更改的文件。
4. pytest-instafail
pytest-instafail
修改了 pytest 的默认行为,以立即显示失败和错误,而不是等到 pytest 完成运行每个测试。
5. pytest-tldr
一个全新的 pytest 插件,它将输出限制为您需要的内容。 pytest-tldr
(tldr
代表“太长,没看”),与 pytest-sugar
一样,除了基本安装外,不需要任何配置。 与 pytest 的默认输出(非常冗长)不同,pytest-tldr
的默认设置将输出限制为仅失败测试的回溯,并省略了一些人觉得烦人的颜色编码。 添加 -v
标志会为那些喜欢它的人返回更详细的输出。
6. pytest-xdist
pytest-xdist
允许您通过 -n
标志并行运行多个测试:例如,pytest -n 2
将在两个 CPU 上运行您的测试。 这可以显着加快您的测试速度。 它还包括 --looponfail
标志,该标志将自动重新运行失败的测试。
7. pytest-django
pytest-django
向 Django 应用程序和项目添加 pytest 支持。 具体来说,pytest-django
引入了使用 pytest fixtures 测试 Django 项目的能力,省略了导入 unittest
和复制/粘贴其他样板测试代码的需要,并且运行速度比标准 Django 测试套件更快。
8. django-test-plus
django-test-plus
并非特定于 pytest,但它现在支持 pytest。 它包括自己的 TestCase
类,您的测试可以从该类继承,并且使您可以使用更少的按键来键入频繁的测试用例,例如检查特定的 HTTP 错误代码。
我们上面提到的库绝不是您扩展 pytest 使用的唯一选择。 有用的 pytest 插件的范围非常广泛。 查看 Pytest 插件兼容性 页面以自行探索。 哪些是您的最爱?
评论已关闭。