8 个强大的 pytest 插件

这个流行的 Python 测试工具最棒的方面之一是其强大的生态系统。 这里有八个可用的最佳 pytest 插件。
293 位读者喜欢这篇文章。
Programming keyboard.

Opensource.com

我们是 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-tldrtldr 代表“太长,没看”),与 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 插件兼容性 页面以自行探索。 哪些是您的最爱?

标签
User profile image.
Lacey Williams Henschel 是 REVSYS 的一名软件工程师,也是 DjangoCon US 组织团队的一员。 过去,她曾担任 DjangoCon US 主席,组织过几次 Django Girls 研讨会,为 Treehouse 教授课程,并撰写了关于技术活动可访问性的文章。
User profile image.
Jeff Triplett 是一名开源开发人员,并在 REVSYS 担任软件工程师、顾问和合伙人。 他是 Python 软件基金会的董事会成员。 他偶尔会在他的网站上写博客。

评论已关闭。

知识共享许可协议本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.