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

Gatling Scala如何校验响应状态码属于指定范围或指定值

Gatling 校验混合区间/离散值HTTP状态码的实现方案

status.in() 原生仅支持接收Int类型可变参数,不支持直接传入Range对象,不需要手动枚举所有状态码,可通过以下两种方式实现需求:

  • 方案1:序列展开传参(推荐,和原生in校验行为完全一致)
    利用Scala语法将Range转为序列,拼接离散状态码后展开为可变参数传入即可,代码简洁易维护,还能避免手动枚举时写错数值的问题:
scenario("Scenario example").exec(
  httpRequest
    .check(
      status.in(
        (200 to 209) ++ Seq(304, 404): _*
      )
    )
)

语法说明:

  • 200 to 209 会生成200到209所有整数的连续序列

  • ++ Seq(304, 404) 把304、404两个离散值拼接到序列中

  • :_* 是Scala标准语法,作用是把Seq序列展开为in方法需要的可变参数列表

  • 方案2:自定义校验规则(适合复杂逻辑场景)
    如果后续需要扩展更复杂的判断逻辑、自定义报错提示,可以使用validate方法自定义校验逻辑:

import io.gatling.commons.validation._ // 导入校验结果依赖

scenario("Scenario example").exec(
  httpRequest
    .check(
      status.validate("预期状态码校验") { statusCode =>
        if ((statusCode >= 200 && statusCode <= 209) || statusCode == 304 || statusCode == 404) {
          ValidationSuccess
        } else {
          ValidationFailure(s"响应状态码$statusCode 不符合预期,预期范围:200-209、304、404")
        }
      }
    )
)

注:你给出的手动枚举示例中错误包含了210,不属于200-209区间,使用Range写法可以规避这类手误问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:15:35