测试报告与覆盖率是什么
把测试结果与覆盖率以报告形式接入 GitLab:JUnit XML 让合并请求页面直接列出失败用例,覆盖率报告展示行覆盖变化,省去翻原始日志定位的步骤。GitLab 在作业完成后解析 artifacts 中声明的报告文件并渲染到界面;报告文件生成失败或格式不合法时页面只是静默无数据,不会额外报错,因此接入后要实际验证一次展示效果。
基本信息
| JUnit | reports:junit 解析用例结果,MR 页直接显示失败用例 |
|---|---|
| 覆盖率数值 | coverage 关键字用正则从作业日志提取百分比 |
| 覆盖率报告 | reports:coverage_report 展示行级覆盖标记 |
| 展示位置 | 合并请求差异视图与流水线页面 |
| 解析时机 | 作业完成后由 GitLab 解析报告文件 |
报告配置
报告配置
test:
script:
# 生成 JUnit 报告供 MR 展示
- pytest --junitxml=report.xml --cov=src --cov-report=xml
# 从日志提取覆盖率百分比
coverage: '/TOTAL.+ (\\d+%)/'
artifacts:
reports:
junit: report.xml
coverage_report:
coverage_format: cobertura
path: coverage.xml报告类型对照
| 类型 | 关键字 | 作用 |
|---|---|---|
| 用例结果 | reports:junit | 列出失败用例与堆栈信息 |
| 行覆盖 | reports:coverage_report | 差异视图标注覆盖到的行 |
| 覆盖率数值 | coverage 正则 | 流水线徽标与 MR 上展示 |
| 报告留存 | artifacts:paths | 报告文件本身可下载复查 |
典型使用场景
- 合并请求评审:直接看到失败用例清单与覆盖率增减,无需打开日志翻找
- 存量项目接入:先接 JUnit 用例报告,再逐步补覆盖率数值与行级覆盖
- 多测试框架统一:各框架输出 JUnit XML 后走同一套展示与统计
- 覆盖率门禁:结合合并规则,让覆盖率明显下降的变更被提醒或阻断
- 发布前检查:流水线页面汇总通过与失败数量,作为放行依据之一
报告文件路径写错时不会有明显报错,只是页面无数据:配置后要到合并请求页面验证一次。
JUnit XML 必须符合规范结构:格式错误会让解析失败且提示有限,先在本地用解析器校验再提交。