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

Gatling中saveAs已保存变量但后续请求校验失败求助

Gatling API测试校验失败问题排查

核心原因

你提取到的userId是8,但后续请求的校验规则硬编码成了校验id为7,实际请求的是/users/8,返回的用户id是8,和校验条件中的7不匹配,导致校验失败。

具体分析

  • 从Session打印结果userId -> 8可以确认,变量提取逻辑完全正常,userId已经成功保存到会话中
  • 第二个请求的URL/users/#{userId}会被Gatling解析为/users/8,接口返回的是id为8的用户数据
  • 你在check阶段写了jsonPath("$.id").is("7"),这是强制要求返回的id必须等于7,而实际返回的是8,自然匹配失败,触发报错jsonPath($.id).find.is(7), but actually found nothing

修正方案

把校验规则中的硬编码id改为动态匹配提取到的userId,确保校验条件和实际请求的用户数据一致:

.exec(
  http("Extract Data from the response")
    .get("/users?page=2")
    .check(
      jsonPath("$.data[1].id").saveAs("userId")
    )
)
.exec(
  http("Return specific user")
    .get("/users/#{userId}")
    .check(
      jsonPath("$.id").is("#{userId}"), // 用会话中的userId变量做校验
      jsonPath("$.first_name").is("Michael") // 需确认id=8的用户first_name确实是Michael,否则此校验也会失败
    ))

额外注意

如果userId=8对应用户的first_name不是Michael,那么第二个校验项也会失败,建议先确认接口返回的/users/8数据是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:05:35