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

如何在JMeter For Each Controller中使用列表/数组内存储的ID参数

步骤1:调整前置处理器位置并修正代码

你当前将BeanShell PreProcessor放在GraphQL请求的子节点,会导致每次循环都重复读取ID文件,建议先将该前置处理器移动到For Each Controller的同级位置(线程组下、For Each Controller之前),只需读取一次文件即可生成所有ID变量。

修正后的完整代码如下,补充了将ID存入JMeter变量域的逻辑,供For Each Controller识别读取:

// 用vars.get获取JMeter变量,避免占位符解析异常
String filePath = vars.get("filePath");
FileReader fr = new FileReader(filePath);
BufferedReader br = new BufferedReader(fr);
String line;
List idList = new ArrayList();

while ((line = br.readLine()) != null) {
    idList.add(line.trim());
}
// 关闭流避免资源占用
br.close();
fr.close();

// 按「前缀+序号」格式存储ID变量,后缀序号从1开始
for (int i = 0; i < idList.size(); i++) {
    vars.put("input_id_" + (i+1), idList.get(i));
}
// 存储ID总数,可选,方便后续校验
vars.put("id_total", String.valueOf(idList.size()));

步骤2:配置For Each Controller

打开For Each Controller的配置面板,填写以下参数:

  • 输入变量前缀:填上一步定义的前缀 input_id
  • 起始索引(可选):填1(和我们生成变量时的序号起始值匹配)
  • 结束索引(可选):留空即可,控制器会自动识别所有带对应前缀的变量,也可以填${id_total}明确指定范围
  • 输出变量名称:自定义,比如填current_id,这个就是每次循环时存储当前ID的变量名
  • 勾选「数字之前加下划线」选项,和我们生成的input_id_1格式匹配

步骤3:在GraphQL请求中引用ID

在GraphQL HTTP Request的请求体、参数等任何需要用到ID的位置,直接用${current_id}引用即可,每次循环控制器会自动替换成下一个ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:15:05