AIGC测试报告: 用例执行详情 - 数据获取与回填逻辑

AIGC测试报告:{test_case_execution} 用例执行详情 - 数据获取与回填逻辑


一、数据获取

涉及数据库表

表名 说明
zt_product 产品表,通过产品名称获取产品ID
zt_testtask 测试任务表,存储测试轮次信息
zt_testrun 测试运行记录表,存储每个任务的用例执行结果

数据获取流程 (casedatacount.py:308-374)

1. 查询测试任务 (zt_testtask)
   └─ SQL: SELECT id, name FROM zt_testtask 
           WHERE product = %s AND name LIKE '%第%轮%' 
           AND name NOT LIKE '%冒烟%' AND deleted = '0'
           ORDER BY name
   
2. 对每个任务查询测试运行记录 (zt_testrun)
   └─ SQL: SELECT lastRunResult FROM zt_testrun WHERE task = %s
   
3. 统计各轮次的用例执行情况
   - case_num: 总用例数 (len(results))
   - case_run: 已执行数 (lastRunResult不为空)
   - case_pass: 通过数 (lastRunResult = 'pass')
   - case_fail: 失败数 (lastRunResult in ['fail', 'blocked'])

返回数据结构

test_cases = {
    "round1": {
        "case_num": 59,    # 用例个数
        "case_run": 59,    # 执行数
        "case_pass": 39,   # 通过数
        "case_fail": 20    # 未通过数
    },
    "round2": {...},
    "round3": {...}
}

二、Word模板回填

回填逻辑 (main_report_generator.py:763-786)

# 1. 构建用例执行详情数据
test_case_execution = []
for round_key, case_info in test_cases.items():
    test_case_execution.append({
        "轮次": f"第{round_num}轮",
        "用例个数": case_info.get("case_num", 0),
        "执行数": case_info.get("case_run", 0),
        "通过数": case_info.get("case_pass", 0),
        "未通过数": case_info.get("case_fail", 0),
        "通过比例": calculate_pass_rate(...),
        "备注": ""
    })

动态表格生成 (main_report_generator.py:1133-1179)

_replace_test_case_execution_placeholder()
    └─ _create_test_case_execution_table()
        ├─ 表头: ["轮次", "用例个数", "执行数", "通过数", "未通过数", "通过比例", "备注"]
        └─ 数据行: 从 test_case_execution 逐行填充

三、完整数据流

┌─────────────────────────────────────────────────────────────────┐
│                     禅道数据库 (zentao)                         │
├─────────────────────────────────────────────────────────────────┤
│  zt_product        zt_testtask           zt_testrun            │
│  ┌──────────┐     ┌──────────────┐     ┌─────────────┐        │
│  │ id=4     │────►│ id=5         │────►│ task=5      │        │
│  │ name=    │     │ name=中试第1轮│     │ lastRunResult=pass   │
│  │ 2025-530 │     │ begin=11-17   │     │ lastRunResult=fail   │
│  │ 云停车5.30    │ end=11-26   │     │ ...         │        │
│  └──────────┘     └──────────────┘     └─────────────┘        │
│                         │                                       │
│                         ▼                                       │
│                   zt_testtask (id=6,7...)                      │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│              casedatacount.py - get_test_cases_stats()         │
├─────────────────────────────────────────────────────────────────┤
│  1. 查询测试任务 (过滤冒烟)                                      │
│  2. 查询每个任务的 zt_testrun 记录                              │
│  3. 统计: case_num, case_run, case_pass, case_fail             │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                       config.json                               │
├─────────────────────────────────────────────────────────────────┤
│  "test_cases": {                                               │
│      "round1": {"case_num":59, "case_run":59, "case_pass":39, "case_fail":20},  │
│      "round2": {...},                                                          │
│      "round3": {...}                                                            │
│  }                                                                           │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│         main_report_generator.py - 生成Word模板                 │
├─────────────────────────────────────────────────────────────────┤
│  _create_test_case_execution_table()                           │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │ 轮次  │ 用例个数 │ 执行数 │ 通过数 │ 未通过数 │ 通过比例 │ 备注 │   │
│  ├──────────────────────────────────────────────────────────┤   │
│  │ 第1轮 │   59    │   59   │   39   │    20    │ 66.10%  │      │   │
│  │ 第2轮 │   59    │   59   │   59   │     0    │ 100.00% │      │   │
│  │ 第3轮 │   59    │   59   │   34   │    25    │ 57.63%  │      │   │
│  └──────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘

四、关键SQL

-- 1. 查询测试任务(过滤冒烟)
SELECT id, name 
FROM zt_testtask 
WHERE product = 4 
  AND name LIKE '%第%轮%' 
  AND name NOT LIKE '%冒烟%' 
  AND deleted = '0'

-- 2. 查询用例执行结果
SELECT lastRunResult 
FROM zt_testrun 
WHERE task = 5
posted @ 2026-03-17 17:34  菠萝包与冰美式  阅读(22)  评论(0)    收藏  举报