如何 10 分钟上手 pytest:新手也能看懂的完整教程
2026/9/12 16:32:48 网站建设 项目流程

如何 10 分钟上手 pytest:新手也能看懂的完整教程

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

还在用print调试、用一堆unittest样板代码写测试吗?pytest 是 Python 圈主流的可测试框架:一行assert就能定义一个测试,失败时还会把差异直接指给你看,装完就能跑,几乎零配置。这篇文章带你从安装到进阶玩法,全程只贴最关键的代码。

pytest 核心能力:为什么它这么火

先把卖点摊开说:

  • API 极简:不写测试类、不写 setUp/tearDown,assert就是全部;
  • 零配置收集:装完敲pytest,当前目录的test_*.py自动被找到并执行;
  • fixtures 机制:测试前的准备工作用装饰器声明一次,框架负责创建和清理;
  • 插件生态庞大:覆盖率、并行执行、mock、Web 框架支持,pip install即插即用;
  • 支持 Python 3.10+ 与 PyPy3,对现有 unittest 代码也有兼容层。

下面三步,让你亲眼看到它跑起来。

三步极速上手

第一步:pytest 安装命令

终端里执行:

pip install pytest

装完可以直接pytest --version确认版本,一切就绪。

第二步:pytest 第一个测试怎么写

新建test_sample.py,内容只需要三行:

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

注意约定:文件叫test_*.py,函数叫test_*,pytest 靠这个命名规则收集测试,不需要注册任何东西。

第三步:命令行跑通 pytest

pytest -v

-v输出每个测试的状态。断言不成立时,pytest 会打印出变量实际值与期望值的对比,而不是干巴巴的一句AssertionError——对调试来说,这比标准库unittest的输出友好得多。

从简单断言到进阶:fixtures、参数化与 markers

光会写assert不够,真正省事的是下面三个能力。用一个咖啡店点单的例子一次讲透。

pytest fixtures:自动准备与清理测试数据

每个测试都需要一个"装着咖啡基底"的杯子,重复造杯子很烦。用 fixture 声明一次,框架会在每个测试前新建、用完丢弃:

import pytest @pytest.fixture def cup(): return {"contents": ["coffee base"]}

测试函数只要把cup写进参数名,数据就自动注入,互不污染。完整用法见官方文档 doc/en/how-to/fixtures.rst。

pytest parametrize:参数化测试怎么写

同一个"加风味"逻辑要验证香草、焦糖多种口味?别复制函数,用装饰器把数据喂进去:

@pytest.mark.parametrize("flavor", ["vanilla", "caramel"]) def test_add_flavor(cup, flavor): cup["contents"].append(flavor) assert "coffee base" in cup["contents"]

两条数据自动展开成两个用例,报告里也各自独立显示。写法参考 doc/en/how-to/parametrize.rst。

pytest markers:标记测试实现选择性运行

有些测试跑得慢(比如模拟 12 小时冷萃),日常回归时想跳过:

@pytest.mark.slow def test_cold_brew(): assert 12 > 0

运行时用-m "not slow"就能按标记筛选,pytest -m "slow"反过来只跑慢测试。标记机制说明在 doc/en/how-to/mark.rst。

pytest 插件生态:什么场景装哪个

核心框架之外,社区插件按需求挑就行,别一次全装:

场景插件一句话说明
想知道代码被测试覆盖了多少pytest-cov测试跑完顺手出覆盖率报告
测试套件太慢pytest-xdist多进程并行,pytest -n auto直接开跑
单元测试要隔离依赖pytest-mock提供mockerfixture,打桩三行搞定
维护 Django 项目pytest-django把 ORM、请求工厂等能力接进 pytest

pytest 的社区活跃度是它插件生态的底气,早期核心开发就围绕这种线下聚会展开。想自己写插件,可以看 doc/en/how-to/writing_plugins.rst。

总结:pytest 适合谁,下一步做什么

只要你写 Python 库、Web 服务或工具脚本,且希望测试"写起来快、报得清、跑得灵活",pytest 就是最省事的选择——入门五分钟,天花板却很高。下一步建议:读一遍 doc/en/getting-started.rst,然后在今天的工作代码里用@pytest.fixture替换你手写的第一段准备工作。

【免费下载链接】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),仅供参考

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

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

立即咨询