构建请求失败报错:token变量无法保存复用,使用${token}调用仍不生效
故障排查与解决步骤
报错说明
Failed to build request: attribute named is defined
该报错通常出现在Gatling性能测试框架中,本质是你尝试调用的Session变量不存在,或EL表达式写法错误。
具体解决方法
- 检查变量名一致性:确认你保存token阶段的
saveAs参数是否严格等于"token",Gatling的Session变量名大小写敏感,拼写错误、多空格都会导致无法匹配。 - 修正EL表达式写法:不要将Gatling的EL表达式和Scala的字符串插值混用,直接在DSL参数中写包含
${token}的普通双引号字符串即可,错误写法示例(使用了Scala s插值):header("Authorization", s"Bearer ${token}"),正确写法:header("Authorization", "Bearer ${token}")。如果你的代码中$符号被转义(比如写了\${token}),也会导致最终输出为{token},删除转义符即可。 - 确认执行顺序:调用
${token}的请求必须放在生成、保存token的请求之后,Gatling场景按代码编写顺序执行,前置请求未执行时Session中不会存在对应变量。 - 校验变量是否正确保存:在保存token的请求之后插入调试代码,打印Session中的变量值确认是否保存成功:
.exec(session => { println("当前Session中的token值:" + session("token").asOption[String]) session })
如果调试打印结果为None,说明你的jsonPath路径错误,可先打印完整响应体核对token的实际层级路径。
内容的提问来源于stack exchange,提问作者Cristian Concatel
相关产品推荐
相关产品推荐

