Jmeter 线程之间传递变量

知识来源于其他链接,这里记录下。

首先我们不能把登录模块和交易的信息写在一个线程组里面,仅一次控制器,这个配件只是在一个线程里面生效;
我们并发10个线程,循环5次,那么就代表需要登录10次,和循环次数无关,但是这样就达不到我们只登录一次的目的,那么我们需要另辟思路,把登录模块放到一个线程组里面,然后把获取登录的 token 放置到一个共享变量里面,再把其他模块放到业务的线程组里面,需要token 的地方可以引用共享变量; 

在该请求下,添加BeanShell PostProcessor插件,使用__setProperty函数,将之前的变量转换成全局变量

看一下截图,设置共享变量:${__setProperty(name,value,)} 

这里写图片描述

 

在另外一个线程组中引用变量,使用${__P{}}函数:${__property(name)} 
这里写图片描述

 

 

其他例子说明,更有助于理解:

例子一:

1、获取返回结果中的值,设置为变量

2、在该请求下,添加BeanShell PostProcessor插件,使用__setProperty函数,将之前的变量转换成全局变量

3、在另一个线程组中引用该变量。使用${__P{}}函数

 

 4、这种引用关系存在执行的先后顺序,需要在测试计划中设置执行完一个之后,再执行另一个

 

 

例子二及详细说明:

jmeter的线程组之间是相互独立的,各个线程组互不影响,所以线程组A中输出的参数,是无法直接在线程组B中被调用的。

但是有时为了方便管理,我们可能是把各个接口单独存放在不同的线程组中。拿token来说,虽然每一个线程组中我们也可以在放一个登录请求,然后输出一个token供此线程组使用,但这样就比较繁琐且冗余。此时我们就可以使用跨线程组传递参数来解决这样的问题

 

方法:jmeter本身的内置函数中,“__setProperty”函数可以把某参数的值设置成jmeter本身的内置属性,而jmeter的内置属性是所有线程组都可以调用的,是全局变量。各个线程组调用时,只需使用调用jmeter属性的函数“__P”来调用相应的属性即可。

 

操作:以Token来示例,在登录请求中添加一个正则表达式提取器(上一章有说),提取响应值中的token的值。然后再添加一个 Bean Shell PostProcessor 的后置处理器,在这个处理器中调用“__setProperty”函数,设置正则提取到的token的值为全局变量。然后在另外一个线程组中添加一个其他需要用到此token的请求,通过函数“__P”来调用token。

 

流程:

1.添加Bean Shell PostProcessor后置处理器

 

 

 

2. Bean Shell PostProcessor操作面板

Parametres:把需要操作的参数传递给Bean Shell PostProcessor。前面提取出来的Token的值,就把参数Token写入

Script:  string Token=bsh.args[0];     把Bean Shell PostProcessor接收到的参数值,赋值给某参数。0是第一个值。

                 ${__setProperty(requestToken,${Token},)};        调用函数__setProperty,把Bean Shell PostProcessor中的参数Token的值赋值给requestToken,并设置requestToken为jmeter内置属性。

 

 

 

3. 其他线程组调用Token的值

 

 

转载:https://blog.csdn.net/Jasonliujintao/article/details/71542021

https://blog.csdn.net/qq_35885203/article/details/77562644

https://www.cnblogs.com/xuehuiganen/p/8205136.html

转载于:https://www.cnblogs.com/youlanfeier/p/8629309.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值