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

如何在RestAssured迭代Excel测试数据时记录结果并持续执行

解决方案

要实现「失败不终止测试」和「结果记录到报告」的需求,核心是用软断言替代硬断言,同时配合报告工具记录每条用例状态,具体实现如下:

1. 核心修改:使用软断言保证迭代不中断

普通Assert.fail()会直接抛出异常终止测试,改用TestNG的SoftAssert可以收集所有失败,直到所有用例执行完再统一抛出异常,确保迭代能跑完所有Excel记录。

2. 代码示例

初始化软断言对象

在Excel迭代循环外初始化SoftAssert:

import org.testng.asserts.SoftAssert;

// 初始化软断言
SoftAssert softAssert = new SoftAssert();

修改断言逻辑(集成报告记录)

在每条Excel记录的处理逻辑中,替换原有断言,并添加用例标识方便报告定位:

// 从Excel获取当前记录的唯一标识(比如行号,方便报告定位问题)
String testCaseId = "TC_" + row.getRowNum(); // 假设row是当前Excel行对象

if (rbac == true && isallowed == var) {
    // 记录通过状态到控制台/报告
    String passMsg = testCaseId + " - 测试通过:rbac状态与allowed状态匹配";
    System.out.println(passMsg);
    // 若用ExtentReports等工具,可调用:extentTest.pass(passMsg);
} else if (rbac == false && isallowed == false) {
    // 用软断言验证状态码
    softAssert.assertEquals(response.statusCode(), 403, 
        testCaseId + " 验证失败:预期状态码403,实际为" + response.statusCode());
    
    if (response.statusCode() == 403) {
        String passMsg = testCaseId + " - 测试通过:rbac与allowed均为false,返回403状态码";
        System.out.println(passMsg);
        // extentTest.pass(passMsg);
    }
} else if (rbac == false && isallowed == true) {
    String failMsg = testCaseId + " - 测试失败:rbac状态为false,但allowed状态为true";
    softAssert.fail(failMsg);
    System.out.println(failMsg);
    // extentTest.fail(failMsg);
} else {
    String failMsg = testCaseId + " - 测试失败:状态匹配不符合预期";
    softAssert.fail(failMsg);
    System.out.println(failMsg);
    // extentTest.fail(failMsg);
}

最后统一抛出所有失败

在Excel迭代循环结束后,调用assertAll()触发所有收集到的失败:

// 所有用例执行完后,统一抛出失败信息
softAssert.assertAll();

关键说明

  • 软断言的作用:SoftAssert会缓存所有失败断言,不会中途终止迭代,保证所有Excel记录都能被执行。
  • 报告集成:如果使用TestNG自带报告,SoftAssert的失败信息会自动被捕获并展示;如果用第三方报告工具(如ExtentReports),只需在每个分支调用对应的pass()/fail()方法,即可把用例详情写入报告。
  • 用例标识:给每条记录加唯一ID(如行号前缀),能快速在报告中定位到对应的Excel测试数据,提升排查效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:35:16