Python 单元测试完全指南:pytest 从入门到实战
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