Jmeter将token设置为全局变量并跨线程进行传递参数

时间:2023-03-09 22:14:03
Jmeter将token设置为全局变量并跨线程进行传递参数
我们在用Jmeter做性能测试时,一般会涉及到多个线程组。而线程之间或接口之间会对上个参数有依赖性,那么我们将接口中的参数提取出来供其他线程组或接口调用呢
这就需要使用到__setProperty函数,如何使用通过Jmeter的函数助手来使用并获取全局变量呢,以下是详细使用步骤。

提取token

添加一个正则表达式提取器来提取登录接口中返回的token信息
Jmeter将token设置为全局变量并跨线程进行传递参数(1)引用名称 token

(2)正则表达式 “token”:"(.+?)"

(3)模板 用KaTeX parse error: Can't use function '$' in math mode at position 28: …式中有多个正则表达式,则可以是$̲23$等等,表示解析到的第几个值给title。如:11表示解析到的第1个值

(4)匹配数字 0代表随机取值,1代表全部取值,通常情况下填0

(5)缺省值 如果参数没有取得到值,那默认给一个值让它取

设置全局变量

方法一:添加一个BeanShell PreProcessor
Jmeter将token设置为全局变量并跨线程进行传递参数
方法二:添加一个BeanShell Sampler
Jmeter将token设置为全局变量并跨线程进行传递参数
打开函数助手使用_setProperty函数,填写要设置的全局变量名称及要将哪个变量设置为全局变量
Jmeter将token设置为全局变量并跨线程进行传递参数
将函数助手生成的结果复制到BeanShell PreProcessor或者BeanShell Sampler的Script中

使用函数助手获取全局变量

方法一:使用__property函数获取
${__property(token,token,)}
Jmeter将token设置为全局变量并跨线程进行传递参数
方法二:使用__P函数获取
${__P(token,)}
Jmeter将token设置为全局变量并跨线程进行传递参数

添加信息头管理器

将获取全局变量的函数添加到信息头管理器作为全局使用
Jmeter将token设置为全局变量并跨线程进行传递参数

运行查看结果树

运行成功,并成功返回token值
Jmeter将token设置为全局变量并跨线程进行传递参数
Jmeter将token设置为全局变量并跨线程进行传递参数

注意:
如果遇到跨线程组调用参数值不是token值而是变量名时且登录接口能够正常使用的情况下,请检查线程组设置:

Jmeter将token设置为全局变量并跨线程进行传递参数
原因:如果不设置此项,会导致jmeter测试计划下所有添加的线程组同步运行,导致token还没获取出来就已经在调用了,导致获取值时出现错误