如果你工作中已经在用jmeter做接口测试,或性能测试了,你可能会遇到一个麻烦,哪就是jmeter的变量值不能跨线程组传递。

 

看,官方就已经给出了解释。这个不是jmeter的缺陷,这是jmeter的设计使然的。如果变量在开始测试之前已经确定了,我们可以用参数化关联就可以实现。但是如果值时动态生成,每循环一次,值就变化一次,那么怎么弄呢?

此时,你可能就会去百度了,对吗?你会发现,很奇怪,机会所有的百度结果都千遍一律的告诉你用Beanshell***,写上一些不知所云的代码。如果你不懂java,你看这着这开始写代码了,而且还写着一些晦涩难懂的东西,你是不是已经开始头痛了。

如果是这样,那你就继续往下看,我来教你两手。两种方法,轻轻松松搞定,你都不用写些哪啥都不懂的代码。


方法一:定义属性法

思路:jmeter中,属性是全局的,是可以动态设置的;而变量是独属于每个线程的

  • 第一步:我们在jmeter中,添加两个线程组
  • 第二步:在第一个线程组中,调用一个接口,提取你想要的值存储到一个变量中
  • 第三步:在第一个线程组中,添加一个Beanshell后置处理器,然后再打开菜单栏中的 Tools -> 函数助手对话框(Function Helper Dialog),在弹窗中,选择__BeanShell函数,表达式第一个值输入将要存放的属性名称(英文),第二个值输入你在第二步中定义的变量名称,生成函数。复制函数、关闭弹窗,把函数粘贴到BeanShell后置处理器的Script窗口中。

 
  • 第四步:在第二个线程组中,添加一个‘用户参数’,添加变量(Add variable),设置变量名称,再次打开函数助手,选择__P函数,在函数的第一个value值文本框中输入${第三步设置属性名称},生成函数,复制函数,关闭弹窗,把它粘贴到添加的变量的值文本框中

 
  • 第五步:在第二个线程组中,接口参数使用定义的变量${变量名称}

这样,就实现了跨线程组之间传递参数。是不是,很简单。It's so easy!

注意:如果想要设置多个属性,可以在第三步的时候,粘贴多个函数,修改函数中属性名称和变量名称,每个函数之间用英文';'分开。


如果这你都觉得难了,不要灰心,继续往下看,我再教你一个更容易理解的方法。 想要获得更多实用、好用的测试技能,欢迎关注柠檬班公众号,腾讯课堂中搜索柠檬班

方法二:文件转接法

思路:一个线程组运行结果,存储到文件,另一个线程组,通过csv读取文件,然后再提取文件中需要的值,作为变量输入

  • 第一步:在jmeter中,添加两个线程组
  • 第二步:在第一个线程组中,调用接口,然后添加监视器->保存响应到文件,设置保存文件的路径和文件名前缀

 
  • 第三步:在第二个线程组中,添加一个csv数据文件设置(csv set data config),文件名设置为第二步中,设置的保存文件路;变量名称自行定义;分隔符设置为'\t'(为什么这个地方要用\t,留个作业,请大家思考吧)

 
  • 第四步:添加正则表达式提取器(或json提取器),apply to 选择'Jmeter variable Name to use',然后输入csv读取文件设置的变量名;再编写正则提取式

 
  • 第五步:在第二个线程组中,添加接口,使用正则提取器中的变量名称

至此,文件转接法完成。

是不是两种方法都相当简单,都没有去写晦涩难懂的代码!而且都实现了跨线程组传参取值。


当然,这两种方法都能实现跨线程组传递参数取值,不过,他们还是有差异的。如果想了解更多关于他们两种方法之间的差异,可以关注柠檬班公众号,或在腾讯课堂中搜索柠檬班机构,关注我们,获得更多实用,好用的测试技能分享。

【柠檬班】史上最简单的Jmeter跨线程组取参数值的两种办法(不写代码)【原创】的更多相关文章

  1. JMeter接口测试-跨线程组取参数值的两种方法

    前言 如果你工作中已经在用jmeter做接口测试,或性能测试了,你可能会遇到一个麻烦.那就是jmeter的变量值不能跨线程组传递.如果变量在开始测试之前已经确定了,我们可以用参数化关联就可以实现. 但 ...

  2. Jmeter 跨线程组传递参数 之两种方法

    终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的),只需要发送一次登录请求,请求B直接用登录请求的参数即可,直 ...

  3. Jmeter 跨线程组传递参数 之两种方法(转)

    终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的),只需要发送一次登录请求,请求B直接用登录请求的参数即可,直 ...

  4. Jmeter系列(45)- 详解 Jmeter 跨线程组取参数值的方法,免代码!

    如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 用过 Jmeter 的同学应该都 ...

  5. 解决Jmeter跨线程组取参数值难题!(还没试)

    来源 https://mp.weixin.qq.com/s/q7ArxwnX1sOfa9tfHouSBQ 如果你工作中已经在用jmeter做接口测试,或性能测试了,你可能会遇到一个麻烦.   那就是j ...

  6. jmeter跨线程组传值

    在测试过程中,有时候需要jmeter跨线程组传值,jmeter本身又不具备此功能,那么,又该如何实现呢? 其实,我们可以通过BeanShell去实现. 实现过程如下: 1.线程组A中,使用正则表达式提 ...

  7. Jmeter跨线程组传递参数

    Jmeter的线程组之间是相互独立的,各个线程组互不影响,所以线程组A中输出的参数,是无法直接在线程组B中被调用的. 但有时候为了方便,可以把不同模块接口放在不同线程组,就涉及不同线程组传参问题,比如 ...

  8. jmeter跨线程组传值和jmeter跨线程组调用

    Jmeter的线程组之间是独立的,用Jmeter做接口测试或者是性能测试时,经常会涉及到多个线程组.那么如何将A线程组返回的变量信息提取后,传递给B,C线程组使用呢?这里以已登录接口返回的access ...

  9. Jmeter跨线程组传递变量

    请求API需要授权令牌,但是授权令牌只需要获取一次,即可调用服务器上其他业务接口. 所以我想要把授权操作放在单独的一个线程,业务流放在其他线程. 这就需要我把从授权线程获取的令牌传入业务流线程. 解决 ...

随机推荐

  1. P3980 [NOI2008]志愿者招募 费用流 (人有多大胆地有多大产

    https://www.luogu.org/problemnew/show/P3980 感觉费用流比网络流的图更难想到,要更大胆.首先由于日期是连续的,所以图中的点是横向排列的. 这道题有点绕道走的意 ...

  2. codeforce303C-Minimum Modular-剪枝,暴力

    Minimum Modular 题意:就是在一堆数字中,每一个数字对m取模不能等于这堆数字中的其他数字,同时给了K个机会可以删除一些数字.求最小的m: 思路:我一开始完全没思路,队长说的并查集什么的不 ...

  3. CF1027C Minimum Value Rectangle 贪心 数学

    Minimum Value Rectangle time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  4. Covered Points Count CF1000C 思维 前缀和 贪心

     Covered Points Count time limit per test 3 seconds memory limit per test 256 megabytes input standa ...

  5. shell 菜单选择命令

    devices=`adb devices | sed '1d;$d' | sed 's/device//g'`         */sed '1d;$d' : 删除第一行和最后一行*/ device_ ...

  6. Protobuf 安装及 Python、C# 示例

    01| 简介02| 安装2.1 Windows 下安装03| 简单使用3.1 编译3.2 Python 示例3.3 C# 示例 01| 简介 Protobuf(Protocol Buffers),是 ...

  7. SpringBoot集成Zipkin实现分布式全链路监控

    目录 Zipkin 简介 Springboot 集成 Zipkin 安装启动 zipkin 版本说明 项目结构 工程端口分配 引入 Maven 依赖 配置文件.收集器的设置 编写 Controller ...

  8. 小程序 请求Promise简单封装

    最近做小程序在调用后台接口的时候感觉总写很长一串,很冗杂.非常想念vue中promise封装的写法,于是自己初步封装了一下. 1.url 接口地址 2.headers请求头 3. params 请求参 ...

  9. 可见性有序性,Happens-before来搞定

    写在前面 上一篇文章并发 Bug 之源有三,请睁大眼睛看清它们 谈到了可见性/原子性/有序性三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发 Bug 为了解决 CPU,内存,IO 的 ...

  10. python根据搜索词下载百度图片

    # coding=utf-8 """根据搜索词下载百度图片""" import re import urllib import os def ...