• Jmeter之Bean shell使用(四)——跨线程组之间的全局参数传递


    使用场景:

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

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

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

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

    1、首先选择“获取token”线程组:添加正则表达式,提取出token的值(不会使用正则表达式的同学请查阅博主之前Jmeter相关文章)

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

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

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

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

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

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

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

    4、执行,查看结果

    获取到的token值为上图所示

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

    属性不同于变量,变量作用于一个线程组内,属性通常作用于所有线程组,而且需要使用__P或者__property函数来进行引用。

    这个属性的引用方式是规定的~在官网上有说明,你可以通过这个连接查看这部分的原文文档:http://jmeter.apache.org/usermanual/functions.html

  • 相关阅读:
    硬币游戏—— 代码分析与改进
    之于我
    C语言中unsigned char与char的区别
    用户体验分析: 以 “通大就业微信公众号” 为例
    2017(秋)软工作业: (2)硬币游戏—— 代码分析与改进
    我与软件工程
    软件工程第四次作业
    软件工程第三次作业
    软件工程第二次作业
    作业四 用户体验分析:以 “师路南通网站” 为例
  • 原文地址:https://www.cnblogs.com/hjianhui/p/9991421.html
Copyright © 2020-2023  润新知