pytest:帮助编写更好的程序

pytest 框架使编写小型、可读的测试变得容易,并且可以扩展以支持应用程序和库的复杂功能测试。

pytest requires: Python 3.7+ or PyPy3.

PyPI package name: pytest

简单的例子

# content of test_sample.py
def inc(x):
    return x + 1


def test_answer():
    assert inc(3) == 5

执行:

$ pytest
=========================== test session starts ============================
platform linux -- Python 3.x.y, pytest-7.x.y, pluggy-1.x.y
rootdir: /home/sweet/project
collected 1 item

test_sample.py F                                                     [100%]

================================= FAILURES =================================
_______________________________ test_answer ________________________________

    def test_answer():
>       assert inc(3) == 5
E       assert 4 == 5
E        +  where 4 = inc(3)

test_sample.py:6: AssertionError
========================= short test summary info ==========================
FAILED test_sample.py::test_answer - assert 4 == 5
============================ 1 failed in 0.12s =============================

由于 pytest 的详细断言内省,只使用普通的 assert 语句。参见 快速入门 获取使用 pytest 的基本介绍。

特性

  • 关于失败的详细信息 assert 语句 (不需要记住 self.assert* 的名字)

  • 测试模块和函数 Auto-discovery

  • Modular fixtures 用于管理小型或参数化的 long-lived 测试资源

  • 是否可以开箱运行 unittest (包括 trial)和 nose 测试套件

  • Python 3.7+ or PyPy 3

  • 丰富的插件架构,拥有超过 800+ 的 外部插件 和欣欣向荣的社区

文档

  • 快速上手 - 安装 pytest 并在 20 分钟内掌握它的基础知识

  • 学习指南 - 一步一步的指南,涵盖了大量的用例和需求

  • 参考指南 - 包括完整的 pytest API 参考,插件列表和更多

  • 解释 -背景,关键主题的讨论,对更高层次问题的回答

错误/请求

请使用 GitHub 问题跟踪器 提交错误或请求功能。

支持 pytest

Open Collective 是一个面向开放透明社区的在线融资平台。它提供了筹集资金和完全透明地分享你的财务状况的工具。

对于想要一次性或每月直接向该项目捐款的个人和公司来说,这是一个选择的平台。

更多细节见 pytest collective

pytest 之企业

可作为 Tidelift 订阅的一部分。

pytest 和数千个其他包的维护者正在与 tidellift 合作,为您用来构建应用程序的开源依赖提供商业支持和维护。节省时间、降低风险并改善代码健康状况,同时为您使用的确切依赖项的维护者付费。

了解更多。

安全

pytest 从未与安全漏洞关联,但在任何情况下,要报告安全漏洞,请使用 Tidelift 安全联系。Tidelift 将协调修复和披露。