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
相关产品推荐
相关产品推荐

