5分钟跑通 pytest:Python 测试的零门槛上手指南
2026/9/12 5:01:19 网站建设 项目流程

5分钟跑通 pytest:Python 测试的零门槛上手指南

【免费下载链接】pytestThe pytest framework makes it easy to write small tests, yet scales to support complex functional testing项目地址: https://gitcode.com/GitHub_Trending/py/pytest

pytest 是目前最主流的 Python 测试框架。一行 assert 就能写出一个完整测试。哪怕你从没写过测试,五分钟也能让它跑起来。

为什么值得试:三个改变写测试体验的差别

样板代码少。老牌 unittest 要写类、要 setUp、要 self.assertAlmostEqual。pytest 里,普通函数加一个 assert 就是测试。

失败信息一眼看懂。assert 不通过时,pytest 会告诉你错在哪一行、两边的值各是多少。不用再靠加 print 猜。

开箱即跑。不用指定类名,不用写文件路径。敲一个 pytest,它自动收集所有 test_ 开头的文件。

五分钟上手:安装、第一个测试、跑通它

第一步,安装:

pip install -U pytest

-U 表示升级到最新版,已有安装的话这条命令顺便完成升级。

第二步,新建一个 test_sample.py,写一个被测函数和一个测试函数:

def inc(x): return x + 1 def test_answer(): assert inc(3) == 4

注意名字都以 test_ 开头,这是 pytest 识别测试的依据。

第三步,直接跑:

$ pytest test_sample.py . [100%] 1 passed in 0.04s

看到这行 "1 passed" 就成了 ✅ 完整步骤参考 doc/en/getting-started.rst。

一个真实场景走查:三个用例变成一个参数化函数

📌 假设有个 add(a, b) 函数,要验证三组数据:(1, 2, 3)、(-1, 1, 0)、(0, 0, 0)。

写三个测试函数很重复。用内置的 parametrize 装饰器,数据摆成一张表就行:

import pytest @pytest.mark.parametrize( "a, b, expected", [(1, 2, 3), (-1, 1, 0), (0, 0, 0)] ) def test_add(a, b, expected): assert add(a, b) == expected

一行一组数据,哪组失败,输出里会明确标出来。更多玩法见 doc/en/how-to/parametrize.rst。

少踩坑的实践技巧

⚠️ 这几条是社区里反复被强调的:

  • 命名严格守约定:文件 test_xxx.py、函数 test_xxx。收集靠这个规则,命名不对会被直接忽略,而且不给提示。
  • 放心用裸 assert:pytest 会重写断言,自动展示期望值和实际值的差异,比 print 调试高效得多。
  • 公共资源交给 fixture:临时文件、数据库连接这类东西写成 fixture,而不是在每个测试里复制粘贴,还能用 scope 控制创建频率。原理见 doc/en/explanation/fixtures.rst。
  • 慢测试打上标记:@pytest.mark.slow 标一下,平时用 -m "not slow" 只跑快的,长的留给 CI。

值得搭配的生态扩展

🚀 按需装,别贪多:

  • pytest-cov:生成代码覆盖率报告,告诉你哪些行还没被测试覆盖。
  • pytest-xdist:把测试分到多个进程并行跑,大用例集等待时间直接砍半。
  • pytest-mock:提供 mocker fixture,一行代码 stub 掉第三方依赖。
  • pytest-django:帮你配好 Django 测试环境,不用手动折腾数据库。

插件清单维护在 doc/en/reference/plugin_list.rst,想找什么细分方向的方案都能翻到。pytest 社区非常活跃,早期开发冲刺还是线下办的:

下一步建议先把官方文档的入门篇和 fixture 章节过一遍,能自己写 fixture 之后,日常场景基本就够用了。官方文档入口:doc/en/index.rst。

【免费下载链接】pytestThe pytest framework makes it easy to write small tests, yet scales to support complex functional testing项目地址: https://gitcode.com/GitHub_Trending/py/pytest

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询