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

JMeter线程组间全局变量传递失败,请问脚本缺失什么配置?

解决JMeter跨线程组传递变量的问题

问题原因

你通过vars.put()修改的是线程局部变量,每个线程组的线程拥有独立的变量空间,第二个线程组无法读取第一个线程组里修改后的局部变量值。User Defined Variables中的初始值会被每个线程组各自加载,但后续的局部修改不会跨线程组共享。

解决方案

1. 用全局属性存储修改后的值

在第一个线程组的JSR223 Sampler里,把修改后的access_token存入JMeter全局属性(而非局部变量):

// 替换原来的vars.put("access_token", "aaaaa")
props.put("access_token", "aaaaa")

2. 在第二个线程组中读取全局属性

有两种方式获取值:

  • 直接在JSR223 Sampler中读取:
    def token = props.get("access_token")
    log.info("获取到的access_token: " + token)
    
  • 如果要在其他采样器中用${access_token}的形式引用,可以在第二个线程组的JSR223 PreProcessor中把全局属性转成局部变量:
    vars.put("access_token", props.get("access_token"))
    

3. 确保线程组按顺序执行

如果测试计划里线程组是并行运行的,第二个线程组可能在第一个线程组修改属性前就执行了,导致拿不到值。需要:

  • 打开测试计划的配置界面
  • 勾选Run Thread Groups consecutively(按顺序运行线程组)选项,让第一个线程组执行完毕后再启动第二个线程组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:02:33