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

Gatling测试中使用JSON Feeder校验响应体失败问题

解决Gatling中Feeder变量在jsonPath.is()中不生效的问题

问题根因

你写的 .is("${out}") 是把 ${out} 当成了字面量字符串来使用,Gatling不会解析这个EL表达式,所以它会拿响应里的 "pong" 和字符串 "${out}" 做对比,这就导致了报错。而 substring("${out}").exists() 能生效,是因为该方法的参数支持自动解析EL表达式,和 is() 的字符串参数逻辑不一样。

解决方案

有两种可行的修改方式:

方式一:用Lambda从Session中取值(Java环境推荐)

直接通过Lambda表达式从Session里获取Feeder注入的变量值,替换原来的字符串参数:

final ChainBuilder call = exec(http("Api Response")
        .post("/ping")
        .check(status().is(200))
        // 从session中取出"out"对应的变量值
        .check(jsonPath("$.result").is(session -> session.getString("out"))));

方式二:用EL表达式包装类

导入Gatling的ElString类,把字符串表达式包装成可解析的动态值:

// 需要先导入这个类
import io.gatling.core.el.ElString;

final ChainBuilder call = exec(http("Api Response")
        .post("/ping")
        .check(status().is(200))
        // 用ElString包装表达式,让Gatling解析变量
        .check(jsonPath("$.result").is(ElString.el("${out}"))));

验证效果

修改后,Gatling会从Session中取出Feeder注入的 "pong" 值,和响应体里的result字段做对比,就能正常通过响应校验了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:40:16