在Jmeter中跨线程组传递变量(token)--设置全局变量

参考资料:

Jmeter跨线程组传递参数(token)_jmeter获取token传递给下一个线程组详解-CSDN博客

最近工作中遇到一个问题,就是如何跨线程组传递变量,比如token,后来找到一些资料解决了该问题,目前有两种方式都可以解决,我这边会记录下来,以备后期使用。

1、首先就是在jmeter中配置登录接口、提前需要传递的变量,需要接收变量的接口等,首先需要在同一个线程组中跑通,这个过程就不赘述了,其它教程都有。

2、我这边需要从登录接口中传递的值已经提取出来了,如步骤1中所示,需要传递的值引用名称为:data;这点要注意了,后面需要用到这个名称变量

3、在提取需要传递变量的接口下添加一个BeanShell后置处理程序组件,登录接口右击-添加-后置处理器-BeanShell 后置处理程序。

4、BeanShell 后置处理程序组件添加完成后,需要用到自带的${__setProperty(key,value,true)}函数;点击Tools-函数助手对话框;选择_setProperty函数后配置该函数,如第二张图所示。

4.1:输入属性名称:dataTOO,随便定义一个全局变量的名称,用于其它线程组接口的调用

4.2:Value of property:输入在登录接口中通过正则提取后定义的变量值名称,我这边为步骤2中的 data。

4.3:配置上面两个属性即可,然后点击生成按钮,复制生成的函数字符串。我这边生成的函数字符串为:{__setProperty(dataTOO,{data},)}

5、配置完成{__setProperty(key,value,true)}函数后将生成的字符串函数:{__setProperty(dataTOO,${data},)}复制到 步骤3 中添加的BeanShell后置处理程序组件中,如下图所示:

复制代码
${__setProperty(dataToo,${data},)};

6、以上步骤就完成的需要全局变量data的提取和定义,下面就是传递给第一个线程组了,首先在测试计划中右击添加线程组。步骤如图所示

7、在第二个线程组中配置需要引用全局变量的接口。

8、需要引用的接口配置完成后,就需要配置引用${__P(key)}函数,点击Toole-函数助手对话框;选择_P;配置该函数

8.1:在属性名称中填写在步骤4 中定义的全局变量名称(即需要全局传递的变量:data)

8.2:点击生成按钮,将生成的字符串:${__P(dataToo,)}复制到需要引用该参数的地方。

9、我这边第二个线程组中的接口是需要在HTTP消息头管理器中引用登录接口生成的data变量或者说是token,所以我这边需要将步骤8中生成的字符串复制到HTTP消息头管理器中某个请求参数中。

9.1: 在消息请求头中Authorization的值中输入步骤8 中生成的字符串:${__P(dataToo,)}

如下图所示:

10、当需要传递的参数设置为全局变量并经过第二个线程组的接口引用后还需要再配置测试计划中的选项。如果不勾选该选项会造成全局变量传递失败。

10.1:在测试计划中勾选:独立运行每个线程组(例如在一个组运行结束后启动下一个)和主线程结束后运行tearDown线程组选项。

经过如上步骤的操作,参数就可以跨线程组进行转递了

下面介绍第二个方式:通过BeanShell后置处理程序和BeanShell预处理程序组件来实现的跨线程组传递参数。

1、在登录接口下添加BeanShell后置处理程序,并对提取以及需要传递的值:authorization;进行存储,如图所示:

复制代码
//将登录接口中提取的值authorization,赋值传递给字符串 str
String str = vars.get("authorization");
//将字符串 str的值存储在全局变量idname中
props.put("idname",str);
//在日志中输出str的值
log.info(str)

2、在第二个线程组中所需要引用全局变量接口的前面添加BeanShell预处理程序组件,添加组件步骤如图所示;

3、配置该组件

3.1:在传递给BeanShell的参数输入框中填写步骤1中提取的参数变量:${authorization}

3.2:在代码编辑框输入输入:${__BeanShell(props.get("idname"),)};

复制代码
//idname  为步骤1中BeanShell组件中定义的全局变量,存储了需要传递的参数值。
${__BeanShell(props.get("idname"),)};

4、将BeanShell预处理程序中的${__BeanShell(props.get("idname"),)};直接复制到所需要引用传递地方即可,如下图放在HTTP信息头管理器中

相关推荐
文人sec3 天前
性能测试-jmeter9-逻辑控制器、定时器压力并发
测试工具·jmeter·性能优化·模块测试
CesareCheung4 天前
JMeter分布式压力测试
分布式·jmeter·压力测试
测试界清流4 天前
jmeter使用技巧
jmeter
春时似衿里4 天前
jmeter配置数据库连接步骤
数据库·jmeter
新知图书4 天前
JMeter的安装部署
jmeter
程序员杰哥4 天前
什么是Jmeter? Jmeter工作原理是什么?
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·测试用例
乐神嘎嘎嘎4 天前
Jmeter测试
jmeter
卓码软件测评4 天前
第三方软件测试机构【性能测试工具用LoadRunner还是JMeter?】
java·功能测试·测试工具·jmeter·性能优化
BatyTao5 天前
Jmeter执行数据库操作
数据库·jmeter
二宝哥5 天前
性能测试工具Jmeter之java.net.BindException: Address already in use
jmeter