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

.NET环境下合并多个Extent Reports HTML报告为单一HTML文件

解决方案:用Extent Reports原生API合并测试报告

直接合并HTML文件肯定行不通——Extent的HTML报告依赖内部的JSON数据和动态渲染逻辑,普通HTML合并工具会彻底破坏这些结构,这也是你之前尝试失败的核心原因。正确的做法是从测试数据源入手,用Extent自身的API生成合并报告,具体步骤如下:

核心逻辑

Extent Reports的HTML报告是基于JSON(v4+)或XML(v2/v3)格式的测试元数据生成的。你需要让每台执行测试的机器同时输出这份元数据文件,然后在Jenkins上用Extent API批量加载所有元数据,重新生成一份完整的合并HTML报告。

针对v4版本的具体操作

  1. 修改测试代码:每台机器执行测试时,除了生成HTML报告,额外导出JSON格式的测试数据。示例代码:
    ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter("Test.html");
    ExtentReports extent = new ExtentReports();
    extent.attachReporter(htmlReporter);
    
    // 执行测试逻辑...
    
    // 导出JSON元数据(执行flush后会在HTML同目录生成对应.json文件)
    extent.setReportUsesManualConfiguration(true);
    extent.flush();
    
  2. 收集元数据:让所有机器将生成的JSON文件上传到Jenkins服务器的统一目录(比如/jenkins/reports/extent-json)。
  3. 生成合并报告:在Jenkins上编写Java/Groovy脚本,批量加载所有JSON文件并生成合并报告:
    ExtentReports mergedExtent = new ExtentReports();
    ExtentHtmlReporter mergedHtml = new ExtentHtmlReporter("merged-all-tests.html");
    mergedExtent.attachReporter(mergedHtml);
    
    // 遍历目录下所有JSON文件
    File jsonDir = new File("/jenkins/reports/extent-json");
    for (File jsonFile : jsonDir.listFiles((d, name) -> name.endsWith(".json"))) {
        mergedExtent.loadJsonConfig(jsonFile.getAbsolutePath());
    }
    
    mergedExtent.flush();
    

针对v2/v3版本的操作逻辑

v2和v3主要用XML作为元数据格式,步骤类似:

  1. 每台机器执行测试时导出XML报告(默认会生成,或通过配置开启)。
  2. 收集所有XML文件到Jenkins统一目录。
  3. 用API加载XML并生成合并报告:
    ExtentReports mergedExtent = new ExtentReports();
    ExtentHtmlReporter mergedHtml = new ExtentHtmlReporter("merged-all-tests.html");
    mergedExtent.attachReporter(mergedHtml);
    
    File xmlDir = new File("/jenkins/reports/extent-xml");
    for (File xmlFile : xmlDir.listFiles((d, name) -> name.endsWith(".xml"))) {
        mergedExtent.loadXMLConfig(xmlFile.getAbsolutePath());
    }
    
    mergedExtent.flush();
    

关键注意事项

  • 所有机器必须使用完全相同版本的Extent Reports,不同版本的元数据格式不兼容,会导致加载失败。
  • 绝对不要用第三方HTML/XML合并工具直接处理Extent的报告文件,必然会破坏数据关联和渲染逻辑。
  • 针对100+机器的分布式场景,建议在Jenkins流水线中用copyArtifacts插件批量收集元数据文件,再执行合并脚本,效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:17:22