Jmeter跨线程使用变量的几种方式

本文介绍了在JMeter中跨线程共享变量的三种方法:通过setUp线程组设置全局变量,用于多线程共享登录账号;性能测试中,用户登录后使用CSV数据文件在多个线程间传递Cookie;以及在BeanShell中引用全局变量的方式。


前言

使用Jmeter做接口自动化测试及性能测试时,我们经常需要跨线程传递变量,最常用的比如登录Cookie的调用,以下分别以几种场景来描述跨线程使用变量的方式:

一、多线程使用相同的登录账号

接口测试时,一个测试计划下有多个线程组,每个线程组用于验证不同的接口,但使用相同的账号登录。
系统登录成功成功后,会在响应头中返回Cookie信息,其它接口在请求头中使用该Cookie即可获得授权正常调用。在这里插入图片描述

1.添加【setUp线程组】

该线程组在整个测试计划开始执行时,且做为启动执行的线程组先执行
在该线程组下调用登录接口,系统登录成功后,使用正则表达式提取器,提取响应头信息中的Cookie信息
在这里插入图片描述

2.将token设置为全局变量

返回的token如果要跨线程组使用,需要将该变量处理为全局变量

可以添加BeanShell取样器,使用 “setProperty() ” 函数将tonken处理为全局变量,全局变量可以跨线程组使用
在这里插入图片描述

${__setProperty(token,${token},)};

3.其它线程组中使用

其它线程组下,如果需要使用相同的登录Tokon,则在线程组下添加HTTP Cookie管理器
设置Cookie为前面的全局变量Token,使用全局变量要使用 ${__property(token,)} 函数
在这里插入图片描述

${__property(token,,)}

二、用于性能测试,多用户登录后执行多个线程

1.添加【setUp线程组】

该线程组在整个测试计划开始执行时,且做为启动执行的线程组先执行
在该线程组下调用登录接口,系统登录成功后,使用正则表达式提取器,提取响应头信息中的Cookie信息

但因为要执行并发操作,是一批用户登录,需要提取这一批用户的Cookie,再在其它线程下使用这一批用户的Cookie进行验证。

方法:将一批用户的Cookie结果写入文件,再在其它线程中使用CSV数据文件来循环读取调用这一批Cookie信息,如图:调用登录信息获取userToken后,将Token信息写入文件
在这里插入图片描述
代码如下(示例):

//删除已存在的文件
String filename = "E://LIQF/token.csv";
File file = new File(filename);
if(file.exists()){
	file.delete();
}


//创建文件后写入
FileWriter fstream = new FileWriter("E://LIQF/token.csv", true);
BufferedWriter out = new BufferedWriter(fstream);
out.write( vars.get("userToken"));
out.write(System.getProperty("line.separator"));
out.close();
fstream.close(); 

2.其它线程组中使用

1、CSV数据文件设置
代码如下(示例):
2、Cookie管理器
在Cookie管理器的值中,使用CSV文件中的变量“userToken”
在这里插入图片描述
其它线程组中,每个线程设置多线程组方式并行执行时,会从CSV文件中读取出一批userToken分配给每个线程去执行,也就实现了并发测试过程中,使用不同的用户账号来验证同一个接口性能。

三、在BeanShell中使用全局变量

有些情况下,我们需要在某个线程组中返回的变量,需要在其它线程组的BeanShell中使用

1.将变量设置为全局变量

在这里插入图片描述

2.BeanShell中引用全局变量

在BeanShell中引入全局变量,需要使用props的方式引入,而不能使用vars的方式
如上面的DownFileDir全局变量,要在跨线程组的BeanShell中引入,需使用:

String DownFileDir = props.get("DownFileDir"); 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值