7 - Jmeter系列-2-跨线程组调用token

Jmeter线程组之间是相互独立的,各线程组之间互不影响,想要在不同线程组中使用同一token,方法是将token设置为全局变量。
Jmeter的内置函数中:“__setProperty”函数可以把某参数的值设置成Jmeter的内置属性,也就是全局变量,各个线程组之间调用时,使用Jmeter属性的函数“__property”来调用相应的属性即可。

 

一、准备接口:2个线程组,一个线程组放置登录接口,另外一个线程组放置其它需要用到token的接口

二、登录并获取token

1、HTTP请求默认值:

 2、登录接口:

 3、JSON提取器来提取token:

三、把token设置为全局变量

1、给登录接口所在线程组添加BeanShell取样器,把取到的token变为全局变量:

2、其中的token是在json提取器里面提取出来的token取的名字;autel-token是全局变量的名字

3、脚本的意思是:把token赋值给autel-token这个全局变量

4、把这句复制进脚本就可以了:

“${__setProperty(autel-token,${token},)}”
View Code

1)其中__setProperty是全局属性,前边是两个杠 “_”

2)如果有多个全局变量,就可以把上边的语句复制多份,用英文分号分隔

四、应用:

1、当前线程计划下,添加HTTP信息头管理器

1)这个信息头管理器在当前测试计划里面,当前测试计划的所有线程组外面:

2)这样的信息头管理器不属于任何一个具体的线程组,而是属于当前线程计划下的所有线程组,所有线程组都能用

3)公共的请求头信息都可以放在这里面,其中包含token、content-type等

4)取全局变量autel-token的值:

${__P(autel-token)}
View Code

注意:前边的“_”是两个,autel-token是全局变量的名字

 2、具体线程组里面添加HTTP信息头管理器:这个信息头里面的信息,不是所有线程组公用的,只适用于部分接口请求,所以,就在当前线程组下又添加了信息头管理器

3、上面所有的都设置完以后,我们就可以添加http请求,把接口地址和参数相关配置上

4、具体线程组上,右键添加固定定时器:

1)定时器添加在当前线程组下,是为了有个等待时间,因为脚本运行的很快,取到token以后,有可能还没反应过来就直接运行下个接口了,会导致有的接口没有拿到token而导致运行失败,所以等待一会相对可靠

2)定时器的作用域:当前定时器脚本是添加在具体线程组下的,也就意味着,当前定时器的作用域是这整个线程组,这个线程组里边的每个接口在运行之前都会先运行这个定时器,也就是每个接口运行之前都会等待2S。

 五、整个脚本的结构:

 

posted @ 2022-05-13 11:33  xiaoyanhahaha  阅读(1116)  评论(0编辑  收藏  举报