JMETER设置变量,跨线程引用变量教程【用JMETER还不会提取token?设置环境变量与全局变量?】URL地址拆分介绍,JSON提取器使用方法,BeanShell后置处理程序

目录

        1.添加线程组

        2.在线程组下——添加取样器——HTTP请求

        3.在JMETER的HTTP请求中组建接口(URL拆分介绍)

        4.添加察看结果树

                1.添加察看结果树——测试计划——监听器——察看结果树

                2.将察看结果树放置在线程组下方

        5.在http请求上右键——添加——后置处理器——JSON提取器

        6.添加BeanShell后置处理程序

        7.添加属性显示元件

                全局变量的引用需要用特殊的引用方式


 1.添加线程组(有的的步骤是给萌新写的,当然我也是萌新,尽量详细一点通俗易懂)

2.在线程组下——添加取样器——HTTP请求

3.在JMETER的HTTP请求中组建接口(URL拆分介绍)

                1)协议通常是http或者https

                2)对应协议的端口号则是8080与443端口

                3)请求方式为一般为post或get、delete

                4)路径是URL中间段,内容编码通常为utf-8

                5)服务器名称或ip则URL的中间的一部分

  • 统一资源定位符URL:标记万维网的各种资源,形式为
  • 协议 :// 主机 : 端口 / 路径

例如https://blog.csdn.net/weixin_71957062

那么这条URL的服务器名称(主机)就是“blog.csdn.net”

路径则是“weixin_71957062”

协议为“https”,端口为443

        在jmeter中协议填写之后,端口可以填写,也可以不填写端口,JMETER会根据你的协议,在发送请求的时候自动补充为默认端口

如下图所示

下图证明我们的接口组建完毕,且能够跑通,大家如果想要查看运行结果可以添加察看结果树,往下面的步骤继续走,会有介绍如何添加

4.添加察看结果树

    1.添加察看结果树——测试计划——监听器——察看结果树

    添加察看结果树的目的是请求这个接口后,可以去看到这个接口的响应数据,方便咱们知道自己所需提取的数据的路径

        添加后点击启动按钮(绿色小三角)

       2.将察看结果树放置在线程组下方,这样的话只会执行这个线程组下的脚本,设置响应体文本为JSON格式(根据实际接口响应数据情况来)

          a.这里设置好了之后点击查看结果树,点击上方的绿色箭头

          b.成功请求后可以看到token成功返回了

          c.Token内容在data里的access_token字段中,可以继续往下面看如何提取的

5.在http请求上右键——添加——后置处理器——JSON提取器

这里介绍一下JSON提取器各个字段的意思(个人经验,有问题的地方欢各位俊男靓女评论区指出)

Apply to:应用范围,选默认的main sample only就行了

Names of created variables :给提取出来的参数定义一个名字

JSON Path expressions :匹配JSON响应体的数据,格式$.路径名,图中是绝对路径引用

还有相对路径引用,例如$..access_token就是相对引用

Match No(0 fro Random):匹配JSON响应数据的次数,1则是匹配一次,找到一次想要 的数据就不 找了,可以填写n,就是找n个数据,如果想要把 全部符合的数据都找到的话就是【-1】表示获取所有的符合数据

Compute concatenation var(suffix_ALL):勾选的话,JSON提取器会将找到的所有符合的数 据写入到指定目录的文件中,用 “, “分隔符将它们 连接起来,并将其存储在名为 _ALL的var文件中

Default Values:如果没找到想要的数据,在这里填写的数据就会赋值给变量,相当于默认值

下图是我组建的一个登录接口的请求(因为这个是我自己本地的接口,所有不能放给大家练手,大家可以使用自己项目的接口来练练手,或者看看如何使用,多一个方法多一条思路嘛),登录成功后会返回一个token,下面的步骤咱们就要将这个token提取出来,提取这个token就需要用到JSON提取器,当然也可以使用正则提取器

该接口执行之后如下图所示

这里可以看到需要提取的【token】内容在“data”里的“access_token”字段中

这里我们JSON Path expressions字段就使用相对路径的引用方式$..access_token】(这里有两个点,就是把data省略了,让它在第二数据层级任一数据字段找寻下方是否有access_token字段

也可使用绝对路径的引用方式$.data.access_token】       

tips:不清楚相对路径和绝对路径区别的老铁可以去了解一下

在变量名字段Names of created variables给提取出来的变量命名,我这里命名为【token】,这里可以命名成自己想要的变量名(最好不要命名为中文特殊字符容易出现奇怪的问题)

提取出来的数据只能在当前线程组使用,因为这是一个环境变量局部变量),需要跨线程使用则需要将这个变量设置为全局变量

下面我使用BeanShell后置处理程序来将这个变量设置为全局变量

6.添加BeanShell后置处理程序

        在HTTP请求上右键——添加——后置处理器——BeanShell后置处理程序

添加了之后默认是这样的,可以自己修改一下名字,命个名

 使用JMETER自带的函数助手来帮助我们书写设置全局变量的函数(可以方便很多,也能减少我们因自己原因打错符号啥的,导致无法成功设置全局变量)

这里选择__setProperty函数(这个函数是用来设置参数为全局变量)

属性名称:给这个全局变量命名

Value of property :变量的参数值(我这里引用了线程组中的环境变量{token},在上面我用JSON提取器提取出来了)

Return Original Value of property (default false)?:是否返回属性的原始值(默认值为false),如果这里是true,点击生成按钮后就会在下方的“The result of the function is”字段的文本框后返回属性值,也就是Value of property字段填写的参数,这样方便我们查看是否填写正确

 

我们将生成的函数字符串(${__setProperty(log_token,${token},true)})粘贴到后置处理器的脚本栏

然后执行一次这个线程组,如果没有意外的话就成功创建了这个全局变量啦 

7.添加属性显示元件

那我们怎么知道是否成功创建了变量呢?

这就需要用到非测试元件中的【属性显示】元件了

路径是【测试计划】-【添加】-【非测试元件】-【属性显示】

元件添加成功后我们点击查看是否有自己创建的变量,如果没有就重新排查一下上面的操作步骤是否哪里有问题,比如字母大小写(L和i的大小写搞混了啥的),如果变量存在,那么代表我们可以跨线程使用这个变量啦

        全局变量的引用需要用特殊的引用方式

引用全局变量与引用咱们的局部变量方式不同,引用局部变量通常是用$符号来进行引用操作,而引用全局变量则需要使用${__P(log_token)}来进行引用,其中P前面的下划线是两个下划线,如果只有一个会引用不上变量 

好啦,现在所有的属性都配置好了,我们来验证一下这个变量是否可以成功使用

成功验证!

看到这里相信各位聪明的帅哥美女都学会的JMETER如何提取token以及设置环境变量与全局变量包括怎样使用,如果还有不明白的可以在看看,理解一下,也可以私信问我,欢迎一起学习进步!

觉得有用的话还请动动金手指来个点赞和收藏吧

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
JMeter中,可以使用多种方式实现线程引用变量的操作。其中,最常见的方式是使用全局变量BeanShell后置处理程序。 一种方式是使用JMeter全局变量,通过将变量赋值给全局变量,其他线程可以直接引用全局变量。例如,可以使用以下代码将变量"token"赋值给全局变量"newToken1":JMeterUtils.setProperty("newToken1","${token}")。其他线程可以通过引用${__P(newToken1)}来使用这个全局变量。 另一种方式是通过BeanShell后置处理程序将参数设置全局变量,用于线程传参。在测试计划中,需要将提取变量线程组放在引用变量线程组前,并勾选"独立运行每个线程组"选项。这样,在BeanShell后置处理程序中,可以使用以下代码将参数设置全局变量:vars.put("newToken1", vars.get("token"))。其他线程可以通过引用${__P(newToken1)}来使用这个全局变量。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Jmeter线程使用变量的几种方式](https://blog.csdn.net/frantage/article/details/119078479)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [jmeter线程引用变量的3种方法](https://blog.csdn.net/qq_40308101/article/details/95206034)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值