项目简介
| 字段 |
内容 |
| 项目名称 |
pytest-dev/pytest |
| 项目地址 |
https://github.com/pytest-dev/pytest[1] |
| Star 数 |
14004 |
| Fork 数 |
3177 |
pytest 是 Python 生态中最广泛使用的开源测试框架,自 2004 年诞生以来持续演进,目标是让开发者用更少的样板代码写出可读、可维护的测试。它既适合几行代码的单元测试,也能支撑大型应用与库的功能测试、集成测试与端到端测试。
项目采用 MIT 协议发布,由 pytest-dev 社区维护,拥有完善的官方文档、活跃的 Discord/Libera 聊天频道,以及超过 1300 个第三方插件构成的扩展生态。无论是个人脚本还是企业级 CI/CD 流水线,pytest 都是 Python 项目测试环节的首选工具之一。
核心特性
- 原生 assert 断言:直接使用 Python 的
assert 语句即可,失败时自动输出详细的断言内省信息,无需记忆 self.assertEqual 等 unittest 风格 API。 - 自动发现测试用例:遵循约定即可自动识别
test_*.py 或 *_test.py 中的测试函数与类,一条 pytest 命令即可批量运行。 - Fixture 夹具机制:通过
@pytest.fixture 模块化地管理测试前置准备与后置清理,支持 function/class/module/session 等多级作用域,便于共享数据库连接、临时目录等资源。 - 兼容 unittest 套件:可直接运行现有 unittest 或 trial 测试,降低从旧框架迁移的成本。
- 丰富插件生态:pytest-cov(覆盖率)、pytest-xdist(并行执行)、allure-pytest(报告)等插件覆盖常见测试场景,社区持续贡献新能力。
快速开始
通过 pip 安装最新版 pytest:
pip install -U pytest
创建测试文件 test_sample.py:
def inc(x):
return x + 1
def test_answer():
assert inc(3) == 5
在项目目录下执行:
pytest -v
pytest 会自动收集并运行测试,输出每个用例的通过/失败状态。若断言失败,终端会展示期望值与实际值的对比,便于快速定位问题。需要查看内置 fixture 时,可运行 pytest --fixtures;只运行特定文件或函数时,使用 pytest test_sample.py::test_answer 即可精确筛选。
为什么火了
pytest 登上 GitHub Trending,首先源于其在 Python 测试领域的「基础设施」地位:几乎所有主流 Python 项目与教程都会推荐 pytest,长期积累的用户基数与社区口碑使其持续保持高关注度。2025 年底 pytest 9.0 大版本发布,正式放弃 Python 3.9 支持并引入多项打包与 API 调整,引发大量项目跟进升级与适配讨论。
另一方面,2026 年初披露的 CVE-2025-71176 安全漏洞(涉及 /tmp/pytest-of-{user} 临时目录的可预测命名)进一步将 pytest 推上热搜——社区迅速响应并在 9.0.3 版本中修复,企业用户与开源维护者纷纷检查依赖版本。这类「大版本迭代 + 安全通告 + 快速修复」的组合,既体现了项目的成熟度,也提醒开发者关注测试工具链本身的可靠性,从而再次激活了对 pytest 仓库的关注与 Star 增长。
引用链接
[1]https://github.com/pytest-dev/pytest