Python + Pytest 接口自动化项目模板
自测题
完成以下 3 道题目,检验你的学习成果
问题 1
接口自动化框架的正确搭建顺序是什么?
解析:接口自动化框架应按顺序搭建:配置管理(多环境切换)→ 请求封装(HTTP 客户端 + 鉴权)→ 断言层(协议层 + 业务层)→ 数据驱动(YAML/JSON 存储)→ 报告输出(HTML/JSON)。
问题 2
登录态(Token)应该如何管理?
解析:Token 管理应封装在请求客户端中:获取 Token → 缓存 Token → Token 过期自动刷新。测试用例无需关心鉴权细节,由客户端自动注入 Token 到请求头。
问题 3
接口自动化中 Fixture 按作用域如何组织?
解析:Fixture 按作用域组织:session 级用于全局共享资源(环境配置、数据库连接),module 级用于模块内共享(登录态),function 级用于需要隔离的资源(测试数据)。
测验结果
模板使用说明
这个模板用于练习搭建一个完整的 Python + Pytest 接口自动化项目。接口自动化是测试开发的核心技能,这个模板帮你从零开始构建一个结构清晰、可维护、可扩展的接口测试框架。通过实际搭建,你可以深入理解框架设计的各个维度。
项目骨架
目录结构
api_automation/├── config/ # 配置管理│ ├── base.yaml # 基础配置│ ├── dev.yaml # 开发环境配置│ └── test.yaml # 测试环境配置├── core/ # 核心封装│ ├── client.py # HTTP 请求客户端│ ├── auth.py # 鉴权封装(Token 管理)│ └── assertions.py # 分层断言├── data/ # 测试数据│ ├── test_cases.yaml # 用例数据│ └── fixtures/ # 预置数据├── tests/ # 测试用例│ ├── conftest.py # 全局 Fixture│ ├── test_login.py # 登录相关用例│ └── test_order.py # 订单相关用例├── reports/ # 测试报告└── pytest.ini # Pytest 配置第一步:配置管理
目标:支持多环境配置切换,敏感信息保护。
关键实现:
- 使用 YAML 文件管理配置,按环境拆分(dev/test/staging)。
- 配置加载器读取基础配置后,用环境配置覆盖。
- 敏感配置(密码、密钥)通过环境变量注入,不写在配置文件中。
- 配置加载时校验必填项,缺失时明确报错。
第二步:请求客户端与鉴权
目标:封装 HTTP 请求,自动处理鉴权。
关键实现:
- 基于 requests 库封装请求客户端,统一处理 base_url、headers、timeout。
- 鉴权模块管理 Token 生命周期:获取 Token → 缓存 Token → Token 过期自动刷新。
- 请求客户端自动注入 Token 到请求头,测试用例无需关心鉴权细节。
- 支持请求/响应日志记录,失败时自动打印完整上下文。
第三步:分层断言
目标:设计清晰的断言层级,失败信息完整。
关键实现:
- 协议层断言:状态码、响应头、响应体 schema 结构。通用性强,可跨项目复用。
- 业务层断言:订单状态、金额计算、业务规则。根据业务定制,但接口统一。
- 断言失败信息:包含预期值、实际值、字段路径、请求上下文。让排查者无需重新复现。
- 支持软断言(收集所有失败后统一报告)和硬断言(失败立即停止)。
第四步:数据驱动与 Fixture
目标:用数据驱动减少重复代码,用 Fixture 管理前后置。
关键实现:
- 测试数据从 YAML/JSON 文件读取,与测试代码分离。
- 使用
@pytest.mark.parametrize实现数据驱动,一组代码覆盖多组数据。 - Fixture 按作用域组织:session 级(环境配置、数据库连接)、module 级(登录态)、function 级(测试数据)。
- Fixture 依赖链清晰:登录态依赖环境配置,测试数据依赖登录态。
第五步:报告与 CI 集成
目标:生成可读报告,接入 CI 流水线。
关键实现:
- 使用
pytest-html或allure-pytest生成报告。 - 报告包含:用例执行状态、耗时、失败详情、请求/响应数据。
- CI 配置(GitHub Actions / Jenkins):拉取代码 → 安装依赖 → 执行测试 → 生成报告 → 通知结果。
- 质量门禁:通过率低于阈值时标记构建失败。
练习建议
- 选公开 API 练习:如 JSONPlaceholder、ReqRes 等免费 API,无需自建服务。
- 从登录开始:先实现登录接口测试,理解鉴权流程。
- 逐步扩展:登录 → 查询 → 创建 → 更新 → 删除,覆盖 CRUD 全流程。
- 练习数据驱动:用参数化覆盖正常、边界、异常场景。
面试高频问题
- 「接口自动化框架怎么设计?」→ 按配置管理 → 请求封装 → 断言层 → 数据驱动 → 报告输出的流程回答。
- 「登录态怎么管理?」→ Token 获取 → 缓存 → 过期刷新,封装在请求客户端中,测试用例无感知。
- 「测试数据怎么组织?」→ 数据与代码分离,YAML/JSON 存储,参数化驱动。
- 「怎么处理接口依赖?」→ 前置接口执行结果通过 Fixture 传递给后续用例,或使用数据工厂生成关联数据。
自测题
完成以下 3 道题目,检验你的学习成果
问题 1
接口自动化框架的正确搭建顺序是什么?
解析:接口自动化框架应按顺序搭建:配置管理(多环境切换)→ 请求封装(HTTP 客户端 + 鉴权)→ 断言层(协议层 + 业务层)→ 数据驱动(YAML/JSON 存储)→ 报告输出(HTML/JSON)。
问题 2
登录态(Token)应该如何管理?
解析:Token 管理应封装在请求客户端中:获取 Token → 缓存 Token → Token 过期自动刷新。测试用例无需关心鉴权细节,由客户端自动注入 Token 到请求头。
问题 3
接口自动化中 Fixture 按作用域如何组织?
解析:Fixture 按作用域组织:session 级用于全局共享资源(环境配置、数据库连接),module 级用于模块内共享(登录态),function 级用于需要隔离的资源(测试数据)。