- Python 100%
| docs | ||
| tests | ||
| 任务模块 | ||
| 埋点模块/埋点 | ||
| 备忘录模块/备忘录 | ||
| 好友模块 | ||
| 对话模块/对话 | ||
| 用户模块 | ||
| 第三方模块 | ||
| 订阅模块 | ||
| 通知模块/通知 | ||
| 鉴权模块 | ||
| .gitignore | ||
| batch_runtime.py | ||
| README.md | ||
| run_batch.py | ||
后端接口自动化测试
按模块、分组和接口组织 Python 测试脚本,核验接口响应及相关数据库表、字段。接口契约以 当前接口文档 为准,数据库校验参考 docs/数据库 下最新导出;后端源码作为实现参考,发现差异时按最新接口文档和数据库结构判断。
当前覆盖范围
以下根据当前接口文档和实际 test_*.py 文件统计。脚本数量表示已编写,不代表所有样例已运行通过;最终结果以测试报告为准。
| 模块 | 文档接口数 | 已有接口测试脚本数 |
|---|---|---|
| 任务模块 | 27 | 27 |
| 分享模块 | 5 | 0 |
| 埋点模块 | 2 | 2 |
| 备忘录模块 | 4 | 4 |
| 好友模块 | 15 | 15 |
| 对话模块 | 9 | 9 |
| 用户模块 | 6 | 6 |
| 第三方模块 | 8 | 5 |
| 订阅模块 | 21 | 16 |
| 通知模块 | 5 | 5 |
| 鉴权模块 | 13 | 11 |
| 合计 | 115 | 100 |
原支付相关接口已合并到订阅模块,会员与额度、订单、Apple 购买与交易验证、支付回调及发票相关接口统一按 订阅模块文档 管理,不再将支付、积分和发票列为独立模块。订阅模块已有16个接口、29个样例;仅微信扫码支付启用,Apple及支付宝暂不执行。微信支付回调通过人工扫码后的数据库结算结果联动核验,不独立模拟官方回调。
第三方模块已有5个前端接口脚本,3个官方回调接口跳过。分享模块目前无测试脚本。项目中保留的 AI模块 目录没有测试脚本,当前接口文档中没有独立的 AI 模块文档,因此不计入上表。
订阅模块可运行 python .\run_batch.py --modules 订阅模块。GET只复用现有数据库记录,缺数据记未测试。创建订单第三例需人工扫码;提交开票申请需在数据集填写真实订单ID、抬头ID并在终端输入submit确认。不要将示例企业资料用于真实开票。取消订单严格要求文档规定的PENDING前置,创建后若为PAYMENT_IN_PROGRESS则未测试。详细样例见本地 订阅模块/测试方案.md。
项目结构
接口自动化测试/
├── README.md
├── run_batch.py # 按模块批量运行入口
├── batch_runtime.py # 登录复用、验证码间隔和失败报告
├── docs/
│ ├── 当前接口/ # 最新接口契约
│ ├── 数据库/ # 本地数据库导出,Git 忽略
│ ├── 接口测试编写规范.md
│ └── 批量运行说明.md
├── 各业务模块/分组/单个接口/
│ ├── test_*.py # 独立测试入口
│ ├── cases.json # 测试数据、账号和预期
│ ├── config.py # 接口地址等配置
│ ├── db_check.py # 需要查库的接口使用
│ └── reports/ # 本地运行报告
├── tests/ # 批量运行机制的离线测试
└── reports/ # 批量运行汇总
不同接口按实际需求组织文件,并非每个目录都有上述全部文件。新增或调整测试前阅读 接口测试编写规范。
运行准备
使用 Python 3.10 或更高版本,在项目根目录安装当前脚本使用的第三方依赖:
python -m pip install requests "psycopg[binary]" openpyxl
检查对应接口 config.py 中的服务地址、数据库配置及所需密钥。手机号和新手机号等测试输入填写在该接口 cases.json 中;enabled=1 执行,enabled=2 跳过。接口所需业务前置由对应脚本执行,运行会产生或修改测试环境数据。
桌面用户请求使用 X-Client-Platform: WINDOWS,登录和后续受保护请求保持一致。验证码按终端提示输入;数据库密码等交互以各脚本提示为准。
单接口运行
进入目标接口目录运行脚本,例如:
cd .\备忘录模块\备忘录\01_GET_获取备忘录列表
python .\test_list_memos.py
批量运行
在项目根目录执行,--modules 必填,可选择一个或多个已有脚本的模块:
python .\run_batch.py --modules 任务模块
python .\run_batch.py --modules 任务模块 备忘录模块 通知模块
python .\run_batch.py --modules 任务模块 --list-only
python .\run_batch.py --help
--list-only 只显示计划,不登录、不调用业务接口或数据库。模块内按脚本路径顺序串行运行,样例仍由各自数据集控制。
- 登录作为前置时,同一服务地址、手机号和平台复用本轮成功登录结果;缓存仅保存在进程内存中。
- 登录接口本身的测试实际发送验证码并登录,不使用缓存代替测试;执行前后清空前置登录缓存。
- 同一手机号两次发送验证码尝试至少间隔60秒,未到时间自动等待。不同进程之间不共享计时。
- 鉴权模块当前仅登录接口参与批量执行,其他鉴权接口在计划中标为排除,继续单独运行。
- 401会清除对应共享登录缓存,本次请求不自动重试;403不会被当作Token过期。
详细行为及退出码见 批量运行说明。
测试报告
支持结构化报告的接口在自己的 reports 目录保存完整报告;存在“不通过”样例时,额外生成 不通过_*.md,复用正常报告格式,仅保留失败检查项的预期值、实际值和定位信息,省略通过项及完整数据库快照。
批量运行还会在根目录 reports/批量运行_时间/ 保存:
批量测试汇总报告.md:各接口的通过、不通过、未测试、部分测试、跳过数量及报告链接。批量不通过测试报告.md:有失败样例时生成,汇集各接口失败报告。
未测试、部分测试及执行异常不会计为通过。少数旧鉴权脚本保留终端输出方式;具体以对应脚本为准。
离线验证
python -m unittest discover -s tests -p test_batch_runtime.py
验证登录缓存、验证码间隔、失败报告及批量命令参数等运行机制,不调用真实业务接口。
Git 文件管理
具体规则见 .gitignore。根目录及 docs 内的 Markdown 文档保留,其他目录下的 Markdown 文档忽略;docs/数据库、运行报告和缓存等按忽略规则保存在本地。