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

Setup线程组传值至多主线程组时迭代卡顿及随机传值问题求助

解决Setup线程组向并行循环主线程组传递随机关联值的问题

方案一:属性存储+随机索引取值

Setup线程组配置

  • 完成接口请求后,用正则表达式提取器抓取所有关联值:设置匹配数字为-1,引用名称设为比如token,这样会生成token_1、token_2...token_N以及token_matchNr(存储关联值总数量)
  • 添加JSR223 PostProcessor,用Groovy脚本将所有关联值存入全局属性:
def total = vars.get('token_matchNr') as int
props.put('total_tokens', total.toString())
for (int i = 1; i <= total; i++) {
    props.put("token_${i}", vars.get("token_${i}"))
}

主线程组配置

在需要使用随机关联值的位置,直接用函数组合生成随机索引并取值:

${__P(token_${__Random(1,${__P(total_tokens,)},rand_idx)},)}
  • __Random函数生成1到关联值总数量之间的随机索引
  • __P函数根据索引取出对应的全局属性值
  • 主线程组循环运行时,每次迭代都会生成新的随机索引,拿到不同的关联值

方案二:修复Inter Thread Communication(ITC)插件的使用

Setup线程组配置

  • 用正则提取器抓取所有关联值后,添加JSR223 PostProcessor将值批量放入ITC队列:
def total = vars.get('token_matchNr') as int
def queueName = 'token_queue'
for (int i = 1; i <= total; i++) {
    org.apache.jmeter.protocol.java.sampler.InterThreadCommunication.put(queueName, vars.get("token_${i}"))
}

主线程组配置

  • 添加Get Data from Queue元件,配置如下:
    • 队列名称:token_queue
    • 变量名:random_token
    • 勾选Random order(随机取值)
    • 勾选Loop queue(队列取空后循环取值,适配多次迭代)
  • 后续请求直接使用${random_token}即可,每次迭代都会从队列随机获取一个关联值

关键注意事项

  • 确保测试计划未勾选Run thread groups consecutively,保证主线程组可以并行运行
  • Setup线程组默认会在所有线程组之前执行,无需额外配置执行顺序
  • 正则提取器的匹配数字必须设为-1,才能抓取所有关联值而非单个值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:55:24