Jmeter系列(45)-详解Jmeter跨线程组取参数值的⽅法,免
代码!
如果你想从头学习Jmeter,可以看看这个系列的⽂章哦
前⾔
⽤过 Jmeter 的同学应该都知道,Jmeter 不⽀持跨线程传递参数
哎,那我想跨线程传递参数,要咋整呢?别急,接下来我们就来讲解如何不使⽤代码就可以解决此问题
官⽅也有正式说明,所以这并不是 Bug 哦
⼀定要通过 BeanShell 去跨线程组传递参数吗?
通过百度搜索:Jmeter 跨线程组传递参数
会看到很多⽂章都是通过 BeanShell 写代码去实现的
这对于代码⼩⽩极其不友好!
所以这篇⽂章将教会⼤家如何不需要写代码去实现跨线程传递参数!
定义属性法
思路
在Jmeter 中,属性是全局⽣效的,可以动态设置
但变量是每个线程独有的
所以通过设置属性可以实现跨线程传参,⽽不是通过变量的⽅式
文件名提取测试计划结构树
第⼀步
1. 添加了三个线程组
2. 登录需要注册接⼝返回的⼿机号
3. 获取订单列表需要登录接⼝返回的token,均需要跨线程组传参
注册接⼝的 Json 提取器
第⼆步:通过提取器(json、正则、xpath),提取需要跨线程组传递的值注册接⼝的 BeanShell 后置处理器
第三步
1. 添加⼀个 BeanShell 后置处理器
2. 添加⼀个 ${__setProperty()} 函数,按照图⽚说明写变量名登录接⼝的请求体
第四步
1. 引⽤第三步在 BeanShell 后置处理器设置的变量名(phone)
2. 通过 ${__P()} 来读取对应的属性值
第五步
运⾏脚本!就能发现可以跨线程组传递参数啦
登录接⼝的 BeanShell 后置处理器
⼀样的步骤,添加 token 属性
获取订单列表的请求参数
获取 token 属性
查看属性显⽰
可以通过属性显⽰这个控件查看我们在 BeanShell 设置的两个属性名和对应的值(phone、token)
拓展⼀下
如果想在⼀个 BeanShell 设置多个属性,可以这样写哦
每个函数之间⽤ ; 分开即可(建议分)
然后可以在属性显⽰中查看两个不同的属性都会⽣效
⽂件在转接法
思路
⼀个线程组运⾏结果,存储到⽂件,另⼀个线程组,通过csv读取⽂件,然后再提取⽂件中需要的值,作为变量输⼊线程组结构树
第⼀步
1. 添加两个线程组,写好接⼝
2. 注册接⼝后⾯添加保存响应⽂件(在下⾯)
注册接⼝下的保存响应到⽂件
发布评论