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

JMeter中JSR223预处理器生成列表时ForEach Controller未触发

问题分析与解决

核心原因

你通过vars.put("filelist", varList)将Groovy List对象存入JMeter变量,但For Each Controller无法直接识别Groovy List类型的变量,它仅支持遍历前缀_数字格式的JMeter变量序列(例如filelist_1、filelist_2)。

修复步骤

1. 修正JSR223读取文件代码

修改代码生成带索引的JMeter变量,同时保留列表用于调试:

import java.io.File

// 注意路径转义:反斜杠需写双份,或改用正斜杠
File file = new File("D:\\testdata\\trunk\\version2\\Jmeter\\loadscript\\Files\\txt\\test")
String[] arr = file.list()

// 生成带索引的变量,供For Each Controller遍历
for (int i = 0; i < arr.length; i++) {
    vars.put("filelist_" + (i + 1), arr[i])
}

// 可选:将列表存为对象,方便Debug查看完整内容
vars.putObject("filelist", arr)

2. 配置For Each Controller

  • 输入变量前缀:填写filelist
  • 勾选数字起始于1
  • 输出变量名称:设置为current_file(后续HTTP请求中用${current_file}引用当前文件名)
  • 确保控制器下的HTTP请求处于启用状态,且测试计划线程数至少为1

3. 额外优化(可选)

如果需要在HTTP请求中传入完整文件路径而非仅文件名,可修改循环内的赋值逻辑:

vars.put("filelist_" + (i + 1), file.getAbsolutePath() + File.separator + arr[i])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:16:35