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

Gatling如何实现feeder在repeat循环中每次读取新值并解决报错

问题解决方案

核心问题原因

  • 链式调用缺失:Gatling DSL依赖链式结构构造执行链路,你在repeat代码块内的feed(mapfeeder)和后续exec请求没有用.连接,导致feed动作没有被加入实际执行流程,坐标参数从未注入会话,因此请求时抛出mapx属性未定义的错误。
  • 冗余feed动作:你在ABC_02_DetailsPage_MAP group外提前执行了一次feed(mapfeeder),这就是之前只复用第一个值的原因——会话中已经存在mapx等属性,后续循环如果没有执行新的feed就会一直读取旧值。
  • CSV表头异常:报错信息中属性名存在多余空格,需确认你的data/cordinates.csv表头严格为mapx、mapy、maptoken,无多余空格、大小写偏差。

修正后的代码示例

val mapfeeder = csv(fileName = "data/cordinates.csv").circular

object PDP {
  val pdp = group("ABC_01_DetailsPage") {
    exec(http("PropertyDetailsPage")
      .get("/abc/property/detail.html?propertyId=12345&index=0&q=${address_json6}&qt=address&_qt=address&offset=1&sort=address&limit=20&view=property&mode=&radius=1.0Km&landuse=All")
      .check(substring("Change in Median Price")))
  }
  .pause(duration = 1)
  // 删掉此处冗余的feed,改到循环内每次执行
  .group("ABC_02_DetailsPage_MAP") {
    repeat(30) {
      // 用.连接feed和exec,确保每次循环先读取新的feeder值再发请求
      feed(mapfeeder)
      .exec(http("/mapping")
        .get(uri22 + "?mapTypeId=1006&x=${mapx}&y=${mapy}&z=19&access_token=${maptoken}"))
    }
  }
}

val scn = scenario("RecordedSimulation")
  .feed(SearchFeeder)
  .exec(Homepage.homepage, Login.login, SearchLink.search, SearchEntry.searchentry, PDP.pdp, Logout.logout)

setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol)

调试建议

如果修改后仍有问题,可以在feed后增加会话打印逻辑,确认参数读取正常:

feed(mapfeeder)
.exec { session =>
  println(s"mapx: ${session("mapx").as[String]}, mapy: ${session("mapy").as[String]}")
  session
}
.exec(http("/mapping")...)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 08:24:02