enhance(tests): 改进测试用例记录与覆盖率报告

- 在 ApiCase 中添加失败原因记录,提升测试结果的可读性
- 更新 CoverageReport 结构,增加总用例、通过用例和失败用例计数
- 优化 PrintCoverage 方法,支持详细输出未通过接口及其失败原因
- 更新 Swagger 生成逻辑,包含失败原因字段,增强调试信息
- 改进 SQL 错误计数逻辑,确保在测试模式下准确记录 SQL 错误
This commit is contained in:
2026-04-13 06:45:16 +08:00
parent 9a9b9c83ff
commit 3430bdec19
9 changed files with 516 additions and 151 deletions
+40 -10
View File
@@ -774,28 +774,58 @@ func TestMain(m *testing.M) {
}
```
**输出示例:**
**输出示例(全部通过)**
```
========== API 测试覆盖率报告 ==========
总接口: 42 | 已覆盖: 6 | 覆盖率: 14.3%
总用例: 16 | 通过: 16 | 未通过: 0 | 通过率: 100.0%
已覆盖的接口:
+ /api/user/login 4 用例 (4 通过, 0 失败) 12ms
+ /api/user/info 2 用例 (2 通过, 0 失败) 5ms
+ /api/user/token 2 用例 (2 通过, 0 失败) 4ms
+ /api/user/create 4 用例 (4 通过, 0 失败) 18ms
+ /api/user/forget 2 用例 (2 通过, 0 失败) 6ms
+ /api/user/file 2 用例 (2 通过, 0 失败) 9ms
---------- 通过的接口 ----------
/api/user/login 4 用例 (4 通过, 0 失败) 12ms
/api/user/info 2 用例 (2 通过, 0 失败) 5ms
/api/user/token 2 用例 (2 通过, 0 失败) 4ms
/api/user/create 4 用例 (4 通过, 0 失败) 18ms
/api/user/forget 2 用例 (2 通过, 0 失败) 6ms
/api/user/file 2 用例 (2 通过, 0 失败) 9ms
未覆盖的接口:
未覆盖的接口: (36 个)
- api/goods/list
- api/goods/create
- api/order/list
- ... (共36个未覆盖)
- ...
========================================
```
**输出示例(有失败):**
```
========== API 测试覆盖率报告 ==========
总接口: 42 | 已覆盖: 6 | 覆盖率: 14.3%
总用例: 16 | 通过: 14 | 未通过: 2 | 通过率: 87.5%
---------- 未通过的接口 (1个) ----------
✗ /api/order/create 5 用例 (3 通过, 2 失败) 25ms
[失败] 正常创建订单 — Verify: order 表未写入订单记录
[失败] 库存扣减 — 状态码不匹配: 期望 0, 实际 4
---------- 通过的接口 ----------
✓ /api/user/login 4 用例 (4 通过, 0 失败) 12ms
✓ /api/user/info 2 用例 (2 通过, 0 失败) 5ms
...
未覆盖的接口: (36 个)
- api/goods/list
- ...
========================================
```
报告分为四个区域:
- **汇总区**:接口覆盖率 + 用例通过率,一目了然
- **未通过的接口**:失败接口单独置顶,每个失败用例附带失败原因(状态码不匹配/消息不匹配/响应结构校验失败/Verify 校验失败)
- **通过的接口**:正常通过的接口列表
- **未覆盖的接口**:尚未编写测试的接口
### api-spec.json 覆盖率字段说明
`GenerateSwagger` 生成的每个 `api-spec.json` 文件中,每条 `endpoint` 记录包含以下与测试状态相关的字段: