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

ExtentReports 5.1.1(Java+Selenium):实现测试报告追加而非覆盖

解决ExtentReports 5.1.1测试报告追加问题

要实现每次运行测试将结果追加到同一个MyTestReport.html中,你需要调整报告的初始化逻辑并开启追加模式,具体修改如下:

核心修改点

  • 将ExtentReports和ExtentSparkReporter的初始化移到仅执行一次的时机(比如静态代码块或@BeforeClass),避免每次测试方法执行时重新创建覆盖报告
  • 为ExtentSparkReporter开启追加模式:调用append(true)

修改后的代码示例

import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterSuite;
import java.lang.reflect.Method;
import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.ExtentTest;
import com.aventstack.extentreports.reporter.ExtentSparkReporter;

public class YourTestClass {
    private static ExtentTest test;
    private static ExtentReports report;
    private static ExtentSparkReporter sparkReporter;

    // 静态代码块:类加载时执行一次,也可以用@BeforeClass替代
    static {
        // 初始化SparkReporter并开启追加模式
        sparkReporter = new ExtentSparkReporter("MyTestReport.html");
        sparkReporter.config().setAppend(true);
        
        // 初始化ExtentReports并关联Reporter
        report = new ExtentReports();
        report.attachReporter(sparkReporter);
    }

    @BeforeMethod
    public void startTestMethod(Method testMethod) throws Exception {
        // 仅在每次测试方法前创建测试节点,不再重新初始化报告
        test = report.createTest(testMethod.getName());
    }

    // 在测试套件结束后刷新报告,确保结果写入文件
    @AfterSuite
    public void tearDownReport() {
        if (report != null) {
            report.flush();
        }
    }
}

关键说明

  • sparkReporter.config().setAppend(true):这是开启追加模式的核心配置,默认情况下ExtentSparkReporter会覆盖已有报告,开启后会将新的测试结果追加到现有报告末尾
  • 报告初始化逻辑只执行一次:无论是静态代码块还是@BeforeClass,都能保证不会每次测试方法都重新创建报告实例
  • 必须调用report.flush():在测试执行完成后刷新报告,确保所有测试结果都写入到HTML文件中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 23:18:19