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

