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

如何在JMeter的一个线程组存储请求值到数组并在另一线程组使用?

实现步骤

1. 在T1中收集参数到全局共享列表

在T1中每个需要提取参数的HTTP请求下,添加JSR223后置处理器,选择Groovy语言,输入以下代码:

// 获取当前请求中目标参数的值(替换成你的参数名)
def targetParam = sampler.getArguments().getArgument("your_param_name").getValue()

// 从JMeter全局属性中获取已有的参数列表,不存在则初始化新列表
def paramList = props.get("global_param_list") ?: new ArrayList<>()

// 将当前参数值追加到列表
paramList.add(targetParam)

// 更新全局属性中的列表
props.put("global_param_list", paramList)
  • 替换your_param_name为你要提取的请求参数名。
  • props是JMeter的全局属性对象,跨所有线程组可见,从根源避免了局部变量每次初始化的问题。

2. 配置T2的执行时机

在T2线程组的设置中:

  • 勾选Run thread group consecutively (i.e. after previous thread group ends),确保T1完全执行完毕后才启动T2。
  • 在**线程延迟(毫秒)**输入框中填写30000,实现30秒延迟启动。

3. 在T2中迭代使用参数列表

方法:循环控制器+Groovy函数引用

  1. 在T2中添加循环控制器,将循环次数设置为:
${__groovy(props.get("global_param_list").size(),)}

这会让循环次数自动匹配T1收集到的参数总数。

  1. 在循环控制器内添加需要使用参数的HTTP请求,在参数值位置填写:
${__groovy(props.get("global_param_list").get(${__jm__循环控制器__idx}),)}
  • ${__jm__循环控制器__idx}是循环控制器的内置变量,代表当前循环的索引(从0开始),用来依次取出列表中的每个参数值。

可选:测试后清理全局属性

在测试计划最后添加一个JSR223采样器,输入以下代码,避免下次测试残留数据:

props.remove("global_param_list")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:08:17