Python 单元测试完全指南:pytest 从入门到实战

小飞兽 Python 5 次阅读 2026-07-24

Python单元测试是保证代码质量的第一道防线。pytest是最流行的Python测试框架,比unittest更简洁强大。本文从安装开始,用大量实例覆盖pytest所有核心功能:断言、fixture、参数化、mock、CI/CD集成。

基础语法

第一个测试

首先安装pytest:pip install pytest。然后编写测试文件test_math_util.py,使用assert断言进行测试。运行命令pytest test_math_util.py -v查看结果。

常用断言包括:相等/不等、浮点数近似比较、列表字典内容、异常断言(pytest.raises)。

Fixture:测试前后置准备

Fixture用于测试前的数据准备和测试后的清理工作。使用@pytest.fixture装饰器定义,scope参数控制生命周期(function/class/module/session)。用yield关键字实现测试后的清理逻辑。

参数化:一份测试多组数据

使用@pytest.mark.parametrize装饰器,一份测试代码可以测试多组数据,大大减少重复代码。

Mock:隔离外部依赖

使用unittest.mock模块的patch装饰器,可以隔离外部API、数据库等依赖,专注于测试业务逻辑。

运行效果

pytest tests/ -v --tb=short 可以详细查看测试结果,包括passed和failed的状态。

常见问题

Q1: pytest和unittest区别?pytest更简洁,断言用普通assert;unittest需要继承TestCase。

Q2: 如何跳过测试?使用@pytest.mark.skip装饰器。

Q3: fixture的scope有什么区别?function每个测试函数调用一次,module每个测试文件调用一次。

延伸阅读

  • Python 自动化测试框架
  • GitHub Actions CI/CD
  • Python Mock 详解

---

作者:小马 | 绍大技术网 shaoda.net