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

如何在Gatling的repeat函数中使用feeder值?排查代码未执行请求问题

问题排查与解决方案

现有代码不执行请求的原因

  • 你用val times = 0定义了不可变变量,还试图在exec块里修改它——Scala里val初始化后无法修改,而且这种全局变量的方式完全不适合Gatling的并发场景,多个虚拟用户会互相覆盖这个值。
  • repeat(times)里的times是在场景初始化阶段就确定的固定值(也就是0),不会从Session里动态读取,所以循环根本不会执行,自然没有请求发送。

动态用Feeder值实现Repeat的正确写法

Gatling的repeat支持直接从Session中读取动态值,不需要额外的全局变量。直接用表达式语法引用Session里的count字段即可:

private val scn = scenario("BasicSimulation")
  .feed(csv("你的CSV文件路径.csv")) // 确保CSV文件路径配置正确
  .repeat(session => session("count").as[Int]) {
    exec(http("request")
      .get("https://test.com"))
  }

或者更简洁的Scala表达式写法:

private val scn = scenario("BasicSimulation")
  .feed(csv("你的CSV文件路径.csv"))
  .repeat("count") { // 直接传入Session中的字段名
    exec(http("request")
      .get("https://test.com"))
  }

核心逻辑说明

  • repeat的参数可以是一个Session => Int的函数,Gatling会在运行时针对每个虚拟用户的Session动态获取count值,实现不同用户执行不同次数的请求(foo执行10次,bar执行20次)。
  • 完全避开了全局变量的并发问题,每个用户的Session独立存储自己的count值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 01:52:07