Jmete跨线程组之间的全局参数传递

Jmete跨线程组之间的全局参数传递

使用场景:

请求API需要授权令牌,但是授权令牌只需要获取一次,即可调用服务器上其他业务接口。

所以我想要把授权操作放在单独的一个线程,业务流放在其他线程。

这就需要我把从授权线程获取的令牌传入业务流线程。

解决方法———后置处理器Beanshell PostProcessor

1、首先选择获取token”线程组:添加正则表达式,提取出token的值

https://images2017.cnblogs.com/blog/670882/201711/670882-20171122112606680-1548198717.png

2、在获取token”线程组:添加后置处理器BeanShell PostProcessor

BeanShell后置处理器中使用__setProperty()函数把token设置为全局变量${__setProperty(新值,${提取值},)};

https://images2017.cnblogs.com/blog/670882/201711/670882-20171122112901008-2078252824.png

Parameters:引用正则表达式提取的变量${token}

Script:具体beanshell语法大家可去查看相关资料,这里很简单,一条语句就搞定。

    意思是把获取的变量${token}设置为全局变量,并以新的名字newtoken来进行引用。

可将提取的token写入文件中

FileOutputStream fps = new FileOutputStream("//xsvdinas.quanyou.com.cn/VDI/hujianbo/Documents/Desktop/token1.txt",true);

OutputStreamWriter ows = new OutputStreamWriter(fps);

BufferedWriter bw = new BufferedWriter(ows);

if(!"${token}".isEmpty()){bw.append("${token}\n");}

if(bw!=null){bw.close();}

if(ows!=null){bw.close();}

if(fps!=null){bw.close();}

log.info("token is ${token}")

3、在业务流线程组引用全局变量newtoken

https://images2017.cnblogs.com/blog/670882/201711/670882-20171122113546852-1582657225.png

跨线程引用方法:${__property(变量名)}

引用方式是${__P(newtoken,)},注意花括号中是两个下划线,newtoken后还跟一个逗号,不要写漏了。

 在这个线程组里面加的固定定时器,是因为如果不加定时器,两个线程是同步执行的,会发生token值还没有获取到就进行业务流的接口请求,造成请求返回失败

https://images2017.cnblogs.com/blog/670882/201711/670882-20171122114039321-605179596.png

获取到的token值为上图所示

https://images2017.cnblogs.com/blog/670882/201711/670882-20171122114115211-1018519747.png

函数__setProperty用来设置JMeter属性的值,属性对于JMeter是全局的,因此可以被用来在跨线程组之间通信。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值