You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps中5个作业并行运行时如何获取合并Cucumber报告

Azure DevOps 多Agent作业Cucumber报告合并实现方案

针对5个分散在不同Agent运行的RT作业生成独立Cucumber报告、需要合并为统一HTML报告的需求,按以下步骤落地即可:

  • 统一所有测试作业的原始报告输出规则
    每个RT执行作业不要只生成单份HTML报告,必须同步输出标准格式的Cucumber JSON执行结果文件——这是跨作业合并报告的核心基础,没有原始JSON没法精准合并用例状态、执行步骤、附件关联信息。
    每个作业的JSON报告可以按作业标识命名,比如cucumber-run-1.json到cucumber-run-5.json,统一存到作业目录下的raw-cucumber-json文件夹。作业执行末尾加发布流水线产物步骤,把这个文件夹作为专属产物上传,产物名带上作业标识做区分,比如raw-report-$(Job.Id),确保作业运行结束后,原始结果能被流水线其他环节访问到。如果报告里包含失败截图、执行日志这类附件,要把附件文件夹和JSON文件一起打包上传。

  • 新增专用的报告合并作业
    在流水线中新增一个独立作业专门处理报告合并,配置该作业的依赖项为前面全部5个RT执行作业,同时设置作业运行条件为「即使上游作业失败、部分通过也触发运行」——避免某几个测试作业跑挂就直接跳过报告生成,导致看不到失败用例详情。
    该作业启动后第一步先执行产物下载逻辑,把5个RT作业上传的所有原始JSON报告、附件全部下载到当前作业工作目录的all-raw-data文件夹下,先做文件完整性校验,确认5份JSON都存在再走后续流程。

  • 执行合并逻辑生成统一HTML报告
    合并逻辑分两步走,不用做复杂的二次开发:

    1. 合并原始JSON:标准Cucumber JSON本身是数组结构,每个数组元素对应一个Feature的全量执行结果,只需要把5份JSON里的数组元素全部提取、拼接到同一个JSON数组中,生成merged-cucumber.json即可。如果不想自己写脚本处理,直接用现成的轻量工具就行,比如装个Node版的合并工具,执行命令:
      # 安装轻量合并与报告生成工具
      npm install -g cucumber-json-merge cucumber-html-reporter
      # 合并所有零散JSON为总文件
      cucumber-json-merge ./all-raw-data/*.json > ./merged-output/merged-cucumber.json
      
    2. 渲染统一HTML:基于合并后的总JSON文件,调用HTML生成工具渲染最终报告,可以自定义报告主题、标题、元信息(比如执行批次、总耗时、环境标识),示例命令:
      cucumber-html-reporter \
        --theme bootstrap \
        --jsonFile ./merged-output/merged-cucumber.json \
        --output ./merged-output/final-cucumber-report.html \
        --storeScreenshots true \
        --screenshotsDirectory ./all-raw-data/screenshots
      

    如果团队是Java技术栈,也可以直接用Cucumber官方的reporting jar包执行同样的合并、渲染逻辑,核心流程完全一致。

  • 发布最终报告
    报告生成完成后做两个配置:

    1. 把整个merged-output文件夹作为流水线正式产物发布,命名为「合并版Cucumber测试报告」,所有有流水线访问权限的人员都可以直接下载查看完整HTML
    2. 调用Azure DevOps自带的测试结果发布命令,把合并后的JSON结果转换为平台原生识别的测试用例格式,发布到流水线的「测试」标签页,不用下载HTML就能直接在平台内查看所有用例的通过/失败/跳过状态、执行日志。

踩坑提示:

  1. 所有作业输出的Cucumber JSON必须符合官方标准结构,不要自定义修改字段,不然合并时会出现用例丢失、状态错乱的问题
  2. 附件、截图的相对路径在合并时要保持和原始JSON里记录的路径一致,不然生成的HTML里会出现图片、日志加载失败的问题
  3. 不要尝试直接合并5份独立的HTML文件,这种方式生成的报告会丢失样式、交互能力,用例统计数据也会出错,必须从原始JSON层做合并。

内容的提问来源于stack exchange,提问作者Sanya Sood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 12:48:09