解决Jmeter跨线程组取参数值难题!(还没试)
来源 https://mp.weixin.qq.com/s/q7ArxwnX1sOfa9tfHouSBQ
如果你工作中已经在用jmeter做接口测试,或性能测试了,你可能会遇到一个麻烦。
那就是jmeter的变量值不能跨线程组传递。
看,官方就已经给出了解释。
这个不是jmeter的缺陷,这是jmeter的设计使然的。
如果变量在开始测试之前已经确定了,我们可以用参数化关联就可以实现。
但是如果值时动态生成,每循环一次,值就变化一次,那么怎么弄呢?
此时,你可能就会去百度了,对吗?
你会发现,很奇怪,机会所有的百度结果都千遍一律的告诉你用Beanshell***,写上一些不知所云的代码。
如果你不懂java,你看这着这开始写代码了,而且还写着一些晦涩难懂的东西,你是不是已经开始头痛了。
如果是这样,那你就继续往下看,我来教你两手。
两种方法,轻轻松松搞定,你都不用写些哪啥都不懂的代码。
1定义属性法
思路:jmeter中,属性是全局的,是可以动态设置的;而变量是独属于每个线程的
第一步:我们在jmeter中,添加两个线程组
第二步:在第一个线程组中,调用一个接口,提取你想要的值存储到一个变量中
第三步:在第一个线程组中,添加一个Beanshell后置处理器。
然后再打开菜单栏中的 Tools -> 函数助手对话框(Function Helper Dialog)
在弹窗中,选择__BeanShell函数,表达式第一个值输入将要存放的属性名称(英文),第二个值输入你在第二步中定义的变量名称,生成函数。
复制函数、关闭弹窗,把函数粘贴到BeanShell后置处理器的Script窗口中。
第四步:在第二个线程组中,添加一个‘用户参数’,添加变量(Add variable)。
设置变量名称,再次打开函数助手,选择__P函数,在函数的第一个value值文本框中输入${第三步设置属性名称},生成函数,复制函数,关闭弹窗,把它粘贴到添加的变量的值文本框中。
第五步:在第二个线程组中,接口参数使用定义的变量${变量名称}
这样,就实现了跨线程组之间传递参数。
是不是,很简单。It's so easy!
注意:如果想要设置多个属性,可以在第三步的时候,粘贴多个函数,修改函数中属性名称和变量名称,每个函数之间用英文';'分开。
如果这你都觉得难了,不要灰心,继续往下看,我再教你一个更容易理解的方法。
2文件转接法
思路:一个线程组运行结果,存储到文件,另一个线程组,通过csv读取文件,然后再提取文件中需要的值,作为变量输入
第一步:在jmeter中,添加两个线程组
第二步:在第一个线程组中,调用接口,然后添加监视器->保存响应到文件,设置保存文件的路径和文件名前缀
第三步:在第二个线程组中,添加一个csv数据文件设置(csv set data config)。
文件名设置为第二步中,设置的保存文件路;变量名称自行定义;分隔符设置为'\t'
(为什么这个地方要用\t,留个作业,请大家思考吧)
第四步:添加正则表达式提取器(或json提取器),apply to 选择'Jmeter variable Name to use',然后输入csv读取文件设置的变量名;再编写正则提取式
第五步:在第二个线程组中,添加接口,使用正则提取器中的变量名称
至此,文件转接法完成。
是不是两种方法都相当简单,都没有去写晦涩难懂的代码!而且都实现了跨线程组传参取值。
当然,这两种方法都能实现跨线程组传递参数取值,不过,他们还是有差异的。
如果想了解更多关于他们两种方法之间的差异,可以关注柠檬班公众号,或在腾讯课堂中搜索柠檬班机构,关注我们,获得更多实用,好用的测试技能分享。
解决Jmeter跨线程组取参数值难题!(还没试)的更多相关文章
- Jmeter系列(45)- 详解 Jmeter 跨线程组取参数值的方法,免代码!
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 用过 Jmeter 的同学应该都 ...
- 【柠檬班】史上最简单的Jmeter跨线程组取参数值的两种办法(不写代码)【原创】
如果你工作中已经在用jmeter做接口测试,或性能测试了,你可能会遇到一个麻烦,哪就是jmeter的变量值不能跨线程组传递. 看,官方就已经给出了解释.这个不是jmeter的缺陷,这是jmeter ...
- JMeter接口测试-跨线程组取参数值的两种方法
前言 如果你工作中已经在用jmeter做接口测试,或性能测试了,你可能会遇到一个麻烦.那就是jmeter的变量值不能跨线程组传递.如果变量在开始测试之前已经确定了,我们可以用参数化关联就可以实现. 但 ...
- jmeter跨线程组传值
在测试过程中,有时候需要jmeter跨线程组传值,jmeter本身又不具备此功能,那么,又该如何实现呢? 其实,我们可以通过BeanShell去实现. 实现过程如下: 1.线程组A中,使用正则表达式提 ...
- Jmeter 跨线程组传递参数 之两种方法
终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的),只需要发送一次登录请求,请求B直接用登录请求的参数即可,直 ...
- Jmeter 跨线程组传递参数 之两种方法(转)
终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的),只需要发送一次登录请求,请求B直接用登录请求的参数即可,直 ...
- Jmeter跨线程组传递参数
Jmeter的线程组之间是相互独立的,各个线程组互不影响,所以线程组A中输出的参数,是无法直接在线程组B中被调用的. 但有时候为了方便,可以把不同模块接口放在不同线程组,就涉及不同线程组传参问题,比如 ...
- Jmeter跨线程组传参
我们知道,同一线程组中可以通过“正则表达式提取器”获取其中一个取样器的响应结果中的参数,直接传给线程组中的其他取样器.但其他线程组中的取样器也想使用同样的参数时,无法直接获取.举个例子: 提取“登 ...
- jmeter跨线程组传值和jmeter跨线程组调用
Jmeter的线程组之间是独立的,用Jmeter做接口测试或者是性能测试时,经常会涉及到多个线程组.那么如何将A线程组返回的变量信息提取后,传递给B,C线程组使用呢?这里以已登录接口返回的access ...
随机推荐
- linux网络编程之socket编程(十三)
今天继续学习socket编程,从今天起开始学习UDP,具体内容如下: ①.无连接 UDP协议它内部并没有维护端到端的一些连接状态,这跟TCP是不同的,TCP是基于连接的,而在连接的时候是需要进行三次握 ...
- aiops相关
AIOPS的能力框架 AIOps平台能力体系 AIOps 常见应用场景 按照时间来分 AIOPS实施的关键技术 1.数据采集(硬件,业务指标等) 2.数据预处理(特征工程) 3.数据可视化 4.数据存 ...
- 四舍五入toFoxed方法
四舍五入的方法: Number.prototype.toFixed = function (n) { if (n > 20 || n < 0) { throw new RangeError ...
- linux 防火墙 firewall 设置
背景: 机房断电后导致机器关机重启,原先访问的地址访问不了,使用终端能访问到该服务器,服务启起来后,用curl + 地址能访问,但在外部浏览器访问不了该地址: 首先想到了端口限制----防火墙 参考博 ...
- flask中使用ajax 处理前端请求,每隔一段时间请求一次
需求: flask中使用ajax 处理前端请求,每隔一段时间请求一次,并展示在页面 使用 setInterval(function(){},1000)方法 结果展示: html:(test.html) ...
- 【VS Code】中node.js代码自动补全的方法
原文链接: https://blog.csdn.net/qq_39189819/article/details/91347484
- Restful架构API编码规范
Restful API 目前比较成熟的一套互联网应用程序的API设计理论 一.协议 API与用户的通信协议,总是使用HTTPs协议. 二.域名 应该尽量将API部署在专用域名之下. https://a ...
- 39、扩展原理-BeanFactoryPostProcessor
39.扩展原理-BeanFactoryPostProcessor BeanPostProcessor:bean后置处理器,bean创建对象初始化前后进行拦截工作的 BeanFactoryPostPro ...
- BCB6常用快捷键
:: 项目管理类 :: F10 代码窗口全屏显示时切换到BCB的主窗口 Ctrl + F12 打开源文件清单对话框 ...
- PHP sha1()函数
<!DOCTYPE html> <html> <body> <?php $str = "dashu"; echo sha1($str); ...