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

如何在Groovy中编写多场景的ReadyAPI并行测试断言?

ReadyAPI并行请求状态码断言方案

问题场景

我使用ReadyAPI测试API时,遇到以下场景:并行运行3个互相影响的请求,要求仅1个请求返回200(成功添加对象到列表),另外2个必须返回400(错误)。但并行运行时状态码结果不可预测,偶尔会出现多个请求返回200的异常情况,需要编写Groovy断言函数来检测这类不符合预期的场景。

实现思路

  • 收集三个请求的状态码到一个列表中,统一处理,避免逐个变量判断的繁琐
  • 统计列表中200出现的次数,必须恰好等于1
  • 统计列表中400出现的次数,必须恰好等于2
  • 通过断言验证上述两个统计结果,不符合时抛出明确的错误提示,便于排查问题

具体Groovy断言代码

直接验证版本

// 替换为实际请求的状态码,比如从ReadyAPI响应中获取:test1.response.statusCode
def statusCodes = [200, 400, 400]

def successCount = statusCodes.count(200)
def errorCount = statusCodes.count(400)

// 核心断言逻辑
assert successCount == 1 : "不符合预期:成功请求数为${successCount},预期为1"
assert errorCount == 2 : "不符合预期:错误请求数为${errorCount},预期为2"

封装函数版本

如果需要复用断言逻辑,可以封装成函数:

def validateParallelRequests(a, b, c) {
    def statusList = [a, b, c]
    def successCount = statusList.count(200)
    def errorCount = statusList.count(400)
    
    assert successCount == 1 : "成功请求数异常:实际${successCount},预期1"
    assert errorCount == 2 : "错误请求数异常:实际${errorCount},预期2"
}

// 调用示例,替换为实际请求的状态码变量
validateParallelRequests(test1.response.statusCode, test2.response.statusCode, test3.response.statusCode)

代码说明

  • 使用count()方法统计指定状态码的出现次数,比嵌套if/switch更简洁易维护
  • 断言中添加错误提示信息,当测试失败时能直接看到问题所在
  • 不管哪个请求返回200,只要符合“仅1个成功、2个错误”的规则就会通过验证,完美适配结果不可预测的并行场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:01:17