昨天学会了动态获取token,今天测试接口时希望能够实现跨线程调用token值。
实现原理:
jmeter本身的“__setProperty”函数可以把某参数的值设置成jmeter本身的内置属性,而jmeter的内置属性是所有线程组都可以调用的,是全局变量。各个线程组调用时,只需使用调用jmeter属性的函数“__P”来调用相应的属性即可。
操作过程:
在昨天已经能动态获取到token的基础上,在登录接口下再添加一个Bean Shell PostProcessor 的后置处理器 :
Parametres:就是之前获取token时设置的变量名。
Script:就是把Bean Shell PostProcessor接收到的参数值,赋值给某参数,0是第一个值。调用函数__setProperty,把Bean Shell PostProcessor中的参数token的值赋值给loginToken,并设置loginToken为jmeter内置属性。loginToken是自定义的变量名。
String token = bsh.args[0];
log.info("token:" + token);
${__setProperty(loginToken,${token},)};
登录接口这个线程组就设置好了,其他线程组要调用token值的话直接用“__P”函数调用。
可以在其他线程组下添加一个HTTP Header Manager, http header manager设置如下:
以上都设置完后基本上就可以了,还要注意的一个就是线程组执行顺序问题,把获取token的这个线程组放在第一位,在Test Plan里把下面这一项前面勾上:
好了(*^▽^*)~