🧪pytest 自动化测试框架学习笔记|结合两个优质视频总结
🧪pytest 自动化测试框架学习笔记|结合两个优质视频总结
本文是我基于两个 B 站教学视频的混合学习笔记总结而成:
- 🎥 白月黑羽编程 Pytest 自动化测试框架
- 🎥 码尚教育 Pytest 自动化实战全流程
第一部视频讲解简洁清晰,适合快速入门;第二部内容更系统,涵盖 YAML、Allure、关键字驱动等进阶技巧。为避免重复,我将两个视频内容合理整合,输出这份系统化的 Pytest 学习笔记与实战指南,适合初学者查阅,也适合有经验的测试人员查漏补缺。
📌 一、Pytest 框架简介与核心优势
Pytest 是 Python 中最流行的单元测试框架之一,也是许多接口自动化框架的基础组件。
核心特点:
- ✅ 语法简洁:用
assert就能断言 - ✅ 自动发现用例:命名规则清晰
- ✅ 插件丰富:支持 HTML 报告、多线程执行、失败重试等
- ✅ 数据驱动支持:原生支持
@pytest.mark.parametrize - ✅ 兼容 unittest,支持灵活前后置处理(fixture)
🚀 二、Pytest 基础实战与项目规范
✅ 1. 用例编写与命名规则
# test_math.py |
规范说明:
- 文件名以
test_开头 - 测试函数名以
test_开头 - 类名以
Test开头(不能写__init__)
✅ 2. 用例执行方式
pytest # 执行所有用例 |
建议将这些配置统一写入 pytest.ini 文件中:
# pytest.ini |
⚙️ 三、前后置处理:setup/teardown vs fixture 对比
| 类型 | 控制方式 | 推荐场景 |
|---|---|---|
| setup/teardown | 类方法中定义 | 简单、方法级别资源管理 |
| fixture | @pytest.fixture |
高度灵活,支持参数化、作用域配置 |
| conftest.py + fixture | 全局文件共享配置 | 全项目共享资源,如登录态等 |
🔧 fixture 示例
import pytest |
作用域支持:
- function(默认)/ class / module / session
🧬 四、数据驱动测试(parametrize)
Pytest 原生支持数据驱动,无需额外插件。
|
进阶:
可通过 YAML、JSON、Excel 等加载参数数据:
import yaml |
🎯 五、Allure 报告集成:更美观的测试呈现
📦 安装与生成流程
pip install allure-pytest |
也可通过 Python 代码集成:
if __name__ == "__main__": |
✨ 报告亮点
- 支持标签(如
feature,severity) - 支持截图、响应数据等附件
- 可配置邮件通知,适配 Jenkins CI
🧩 六、YAML 与接口自动化结合应用
YAML 是构建接口自动化中极其实用的配置方式,结合数据驱动、关键字驱动、Allure 报告能实现完整框架闭环。
✅ 用例结构示例(支持断言、标签)
- name: 用户登录测试 |
✅ 工具类封装断言
def validate_response(response, expected_data): |
🛠️ 七、关键字驱动 + Python 反射机制
将常见接口操作封装为函数,配合 YAML 指令执行:
- keyword: login |
KEYWORDS = { |
进一步配合反射动态执行类中方法:
if hasattr(ApiTest, "test_login"): |
🔁 八、进阶技巧汇总
| 场景 | 推荐实践 |
|---|---|
| 测试报告 | Allure(美观) or pytest-html(简洁) |
| 并发执行 | pytest-xdist(支持 -n auto 参数) |
| 失败重试 | pytest-rerunfailures(--reruns=2) |
| 控制用例顺序 | pytest-ordering |
| 跳过未开发用例 | @pytest.mark.skip or skipif |
| 全局资源(如登录状态) | conftest.py + session 级 fixture |
🧾 总结与学习建议
通过结合两个高质量视频的学习,我更加全面地理解了 Pytest 的:
- 用例组织结构
- 数据驱动方式(尤其是结合 YAML)
- 前后置处理机制(fixture 的多种高级用法)
- 报告输出(Allure 报告集成)
- 框架扩展能力(关键字驱动、反射、Jenkins 集成)
✅ 入门建议:先用
assert写简单函数测试,掌握parametrize和fixture
✅ 进阶建议:YAML 数据分离 + Allure 报告集成 + pytest.ini 管理 + 插件扩展
✅ 实战建议:根据项目特点封装断言、数据加载与公共关键字,快速实现框架落地
📚 参考资料:
版权所有,转载请注明出处。
评论










