jmeter-跨线程组传参的两种方法

jmeter的变量值不能跨线程组传递。如果变量在开始测试之前已经确定了,我们可以用参数化关联就可以实现。
但是如果值时动态生成,每循环一次,值就变化一次,那么怎么办呢?以下两种方法可解决

方法一:自定义属性法

思路:jmeter中,属性是全局的,是可以动态设置的;而变量是独属于每个线程的

第一步:我们在jmeter中,添加两个线程组,在第一个线程组中,调用一个接口,提取你想要的值存储到一个变量中

第二步:在第一个线程组中,添加一个Beanshell后置处理器。然后再打开函数助手对话框(Function Helper Dialog),选择__setProperty()函数,表达式第一个值输入将要存放的属性名称(英文),

   第二个值输入你在第二步中定义的变量名称,生成函数,把函数写到BeanShell后置处理器中。

 

第三步:在第二个线程组中,添加一个‘用户参数’,添加变量(Add variable)。设置变量名称,再次打开函数助手,选择__P函数,在函数的第一个value值文本框中输入${第三步设置属性名称},生成函数,复制函数,关闭弹窗,把它粘贴到添加的变量的值文本框中。

第四步:在第二个线程组中,接口参数使用定义的变量${变量名称}

注:需要在测试计划勾选独立运行每个线程组,如果想要设置多个属性,可以在第三步的时候,粘贴多个函数,修改函数中属性名称和变量名称,每个函数之间用英文';'分开。

这样,就实现了跨线程组之间传递参数。

方法二:文件转接法

思路:一个线程组运行结果,存储到文件,另一个线程组,通过csv读取文件,然后再提取文件中需要的值,作为变量输入

第一步:在jmeter中,添加两个线程组,在第一个线程组中,调用接口,然后添加监视器->保存响应到文件,设置保存文件的路径和文件名前缀

第二步:在第二个线程组中,添加一个csv数据文件设置(csv set data config)。文件名设置为第二步中,设置的保存文件路;变量名称自行定义;分隔符设置为'\t'

第三步:添加正则表达式提取器(或json提取器),apply to 选择'Jmeter variable Name to use',然后输入csv读取文件设置的变量名

第四步:在第二个线程组中,添加接口,使用正则提取器中的变量名称,至此,文件转接法完成。

 

 

 

总结2种方法

方法一

线程1:
1、json中获取到token
2、BeanShell中写props.put("token22",vars.get("token"));

线程2:

1、头管理器或别的地方可直接调用
${__BeanShell(props.get("token22"),)}

 

方法二:
线程1:
1、json中获取到token
2、BeanShell中写${__setProperty(TOKEN,${token})}

线程2:
1、用户参数数添加参数:名称可输入token22 ,user输入${__P(TOKEN,)}
2、头管理器或别的地方可直接调用${token22}


————————————————
版权声明:本文为CSDN博主「多测师-侯sir」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_66727391/article/details/126072434

posted on   FanF  阅读(1083)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示