Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法

news2024/10/6 22:29:33

文章目录

  • 前言
  • 一、Jmeter中使用正则表达式匹配
    • 1、选择 RegExp Tester
    • 2、在线程组------》添加------》后置处理器-------里面添加一个“正则表达式提取器”
  • 二、关于正则表达式提取器里面字段的解释
    • 参数说明
  • 三、进一步解释Jmeter正则表达式提取器中的模板
    • 1、当模板设置为$0$     表示在匹配的结果中随机选择一个
    • 2、使用Jmeter中正则表达式提取器模板匹配举例(详细讲解)
    • 3、补充第二点的内容
    • 4、网上另一种解释(目前没有实操过,先记录)
    • 5、这里自己理解有一种说法
    • 注意
  • 总结

前言

本章节主要讲解正则表达式提取器中的模板的含义和用法。


一、Jmeter中使用正则表达式匹配

步骤:

1、选择 RegExp Tester

2、在线程组------》添加------》后置处理器-------里面添加一个“正则表达式提取器”:

 

 

注意:模板选项 和下面的 匹配数字选项 有点重复(理解起来有点重复),有时候可以不填写模板直接填写匹配数字,也是可以成功的。所以并不是两个都的填写。所以才觉得有点重复。

 

二、关于正则表达式提取器里面字段的解释

名称可以随意设置,最好有业务意义
注释可以随意设置,可以为空
Apply to应用范围,四个选项
Main sample and sub-samples匹配范围包括当前父取样器并覆盖至子取样器
Main sample only匹配范围是当前的父取样器
Sub-sample only仅匹配子取样器
JMeter Variable支持对 Jmeter 变量值进行匹配
要检查的响应字段针对响应字段的不同部分进行匹配,共七个选项
主体响应数据的主体部分,排除 Header 部分;Http 协议返回请求的主体部分就是 Body
Body(unescaped)针对替换了转义码的 Body 部分
Body as a Document返回内容作为一个文档进行匹配
信息头只匹配信息头部分的内容
URL只匹配 URL 链接
响应代码匹配响应代码,比如 HTTP 协议返回码 200 代表成功
响应信息匹配响应信息,比如处理成功返回“成功”字样,或者“OK”字样
引用名称匹配出来的信息通过此名称进行访问,${引用名称}
正则表达式正则表达式提起器使用此串进行信息匹配
模板正则表达式可以设置多个模板进行匹配,在此指定运用哪个模板,$1$ 指第一个模板,$2$ 指定第二个模板,以此类推,$0$ 表示全文匹配
匹配数字在匹配过程中往往会出现多个值匹配的青睐,如果匹配数字为0,则代表随机取匹配
默认值如果没有匹配到可以指定一个默认值

参数说明


名称: 可以随意设置,最好有业务意义
注释: 可以随意设置,可以为空
Apply to: 应用范围,四个选项
Main sample and sub-samples:匹配范围包括当前父取样器并覆盖至子取样器
Main sample only:匹配范围是当前的父取样器
Sub-sample only:仅匹配子取样器
JMeter Variable:支持对 Jmeter 变量值进行匹配
要检查的响应字段: 针对响应字段的不同部分进行匹配,共七个选项
主体:响应数据的主体部分,排除 Header 部分;Http 协议返回请求的主体部分就是 Body
Body(unescaped):针对替换了转义码的 Body 部分
Body as a Document:返回内容作为一个文档进行匹配
信息头:只匹配信息头部分的内容
URL:只匹配 URL 链接
响应代码:匹配响应代码,比如 HTTP 协议返回码 200 代表成功
响应信息:匹配响应信息,比如处理成功返回“成功”字样,或者“OK”字样
引用名称: 匹配出来的信息通过此名称进行访问,${引用名称}
正则表达式: 正则表达式提起器使用此串进行信息匹配
模板: 正则表达式可以设置多个模板进行匹配,在此指定运用哪个模板,$1$ 指第一个模板,$2$ 指定第二个模板,以此类推,$0$ 表示全文匹配
匹配数字: 在匹配过程中往往会出现多个值匹配的青睐,如果匹配数字为0,则代表随机取匹配值;不同模板可能会匹配一组值,那么可以用匹配数字来确定取这一组值中的哪一个;负数取所有值,可以与For Each Controller 一起使用来遍历
默认值: 如果没有匹配到可以指定一个默认值


三、进一步解释Jmeter正则表达式提取器中的模板

下面是各参数值的含义:

参数释义
引用名称在HTTP等请求中,引用此数据,需要用到的名称
正则表达式用于将需要的数据提取出来

模板(一个正则表达式就表示一个模板)

例如:一个句子当中含有3个正则表达式,

就表示有三个模板。

一个句子当中可以写很多个正则表达式

表示使用提取到的第几个值:
$-1$:表示取所有值
$0$:表示随机取值
$1$:表示取第1个
$2$:表示取第二个
以此类推:$n$:表示取第n个
匹配数字(0代表随机)0 代表随机取值,1 代表全部取值
缺省值如果正则表达式没有搜找到值,则使用此缺省值

1、当模板设置为$0$     表示在匹配的结果中随机选择一个

 

2、使用Jmeter中正则表达式提取器模板匹配举例(详细讲解)

例如要提取响应结果里的token字段及sex字段(响应内容为:

"token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName":"12548650"),提取器如下设置:

"token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName":"12548650"

在正则表达式里面可以写成:"token":"(.*?)","sex":(.*?),"userName"

正则表达式: 数据提取器,一般简单的通用语法就是:左边界(.*?)右边界,左右边界就是为了能准确定位到想匹配的内容,如最上面图的 "token":"(.*?)","sex":(.*?),"userName", 其中"token":"以及","sex": 和,"userName"这3个就是左右边界,(.*?) 是替换了想要提取的内容,里面的'?'为非贪婪匹配,(非贪婪模式就是说在遇到第一个右边界后就停止匹配,这样就可以精确拿到想要的内容)。建议均使用非贪婪匹配,除非特殊情况。

模板: 对应正则表达式提取器类型,样式为:$n$。

若模板为:$0$,则为整个表达式匹配到的内容,就是包括小括号内跟小括号外的内容,即("token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName")。

若模板为:$1$,则对应正则表达式中的第一个(.*?)所匹配的内容,即(83EEAA887F1D2F1AA1CDA9E197810992) ,

若模板为:$2$,则对应正则表达式中的第二个(.*?)所匹配的内容,即(0),

若模板为$1$$2$,则把2个(.*?)所匹配的内容拼接起来,即(83EEAA887F1D2F1AA1CDA9E1978109920)。

注意:这个模板的意思也就是把正则表达式看成模板,有几个正则表达式,就是几个模板。


匹配数字: 正则表达式匹配数据的最终结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。当为 0 时,随机返回匹配的数据。当为 1 时,表示返回匹配结果数组的第一个元素。当为负数(-1,-2,-100都可以)时,表示返回全部元素,并且同时会返回一个元素总数的变量token_matchNr,在引用时:通过${token_1}的方式来取第1个匹配的内容,${token_2}来取第2个匹配的内容。

缺省值: 匹配失败时的默认值。通常用于后续的逻辑判断,建议使用一些特殊含义的,比如0,NULL,ERROR等。正则结果查看:

如何查看提取到了想要的内容呢,这里就需要提到另外一个后置处理器: Debug PostProcessor

该元件就为调试所用,一般用于查看变量值,添加方法同正则表达式提取器。

3、补充第二点的内容:

正则表达式提取器说明:

Apply to: 应用范围(一般就选择默认的Main sample only),就算有重定向,一般也是提取最终那个请求的接口。

要检查的响应字段: 样本数据源。

主体: 接口响应主体内容,一般要提取普通http响应结果的数据,都勾选这个。

信息头:响应头的所有内容。

Request Headers:请求头的所有内容。

  url:是对sample的url进行匹配,也就是查看结果树里请求内容的第一行url,不包含data里的请求参数(即只能匹配protocol(协议)+host+path+querystring,如:https://www.baidu.com/index.php?tn=monline_3_dg)。

  响应代码:http响应代码,如101,200,302,404,501等。

  响应信息:http响应代码对应的响应信息,例如:OK, Found(HTTP/1.1 200 Ok;HTTP/1.1 302 Found)。

引用名称: 其他地方引用时的变量名称,名称只能是一个,引用方法:${token}。如图

参考博主:jmeter 正则表达式学习(一)--使用详解_linapursue的博客-CSDN博客

参考博主:Jmeter—正则表达式提取器:模板&匹配数字详解_jmeter正则匹配_zhangkezkzk的博客-CSDN博客

4、网上另一种解释(目前没有实操过,先记录)

举例:有以下这些字段

{

"resCode": "000",

"resMsg": "ok",

"prize": "prize1"

}

{

"resCode": "000",

"resMsg": "ok",

"prize": "prize2"

}

{

"resCode": "000",

"resMsg": "ok",

"prize": "prize3"

}

正则表达式为:"prize": "(.*?)"

这个表达式可以匹配三个prize

现在如果我要拿取第二个prize,也就是要拿到prize2,那么模板的值应该填写:$2$

5、这里自己理解有一种说法:

【不要考虑个人返回体格式是什么,能够看出是能匹配到3个prize,那我填写了$1$表示将规则中第一个括号的模式匹配到的内容赋给变量prize】

因为在这里,匹配了3次,那么相当于这个括号里面的正则表达式被用了3次,$1$这里说的是将规则中第一个括号的模式匹配到的内容,匹配是从上到下的匹配,那么第一次肯定就会匹配到prize1

参考博主:jmeter正则表达式提取html,Jmeter 中正则表达式提取器Regular Expression Extractor_刘二婷ttt的博客-CSDN博客

注意:

在其他例子中,正则表达式第一个或者第n个表达式匹配到的个数并不是唯一一个,那么这个时候,就要利用匹配数字来限定自己到底拿取的是哪一个。
那么这个时候就可以得出结论,匹配数字是可以是进一步的筛选。

参考博主:
Jmeter—正则表达式提取器:模板&匹配数字详解_jmeter正则匹配_zhangkezkzk的博客-CSDN博客

 


总结

本篇文章,主要是对正则表达式的运用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/740452.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每个开发人员都应该知道的VS Code入门技巧

这里有一些每个开发人员都应该知道的关于Visual Studio Code (VS Code)的技巧: 1、自定义键盘快捷键:VS Code允许您根据自己的喜好自定义键盘快捷键。点击“文件”->“首选项”->“键盘快捷键”或使用快捷键Ctrl K和Ctrl S打开键盘快捷键编辑器。可以修改现有快捷方式或…

抖音seo源码打包分享

抖音seo源码搭建----分享给各位开发者 获取视频列表 $Video_model new App_Model_Douyin_MysqlVideoStorage(); $video_list $Video_model->getList($where,$this->index,$this->count,$sort); $temp_video_model new App_Model_Douyin_…

微信小程序input的placeholder脱离文档流

今天进行真机调试时input的提示词 placeholder脱离了文档流&#xff0c;但是奇怪的是input框没有脱离文档流 如下图所示&#xff1a; 微信开发工具正常&#xff1a; 真机&#xff1a;不正常 脱离文档流 解决方法&#xff1a; <view clas…

给一个体积水,用不同体积的容器去装

这个有两个方案&#xff1a; 1.每个都装得最满&#xff0c;减少瓶子容积损失 //xzlist 瓶子容积排序 tj水总体积 xzzc各个体积瓶子数 public static void Boxjs(int tj, List<Map<String,Object>> xzlist, List<Map<String,Object>> xzzc){boolean f…

Linux信号机制-2

转自&#xff1a;Linux信号处理_linux 信号处理函数_努力啃C语言的小李的博客-CSDN博客 什么是信号 信号本质上是在软件层次上对中断机制的一种模拟&#xff0c;其主要有以下几种来源&#xff1a; 程序错误&#xff1a;除零&#xff0c;非法内存访问等。 外部信号&#xff1a…

Sql 语句小课堂8:求特定字段平均值的问题

Sql 语句小课堂8&#xff1a;求特定字段平均值的问题 问题来源初始数据超标条件方案一&#xff1a;得出汇总结果方案二&#xff1a;在原有数据上附加其结果 小结 问题来源 最近老顾变得原来越咸鱼了&#xff0c;好久没去逛 CSDN 问答了&#xff0c;于是灵感枯竭&#xff0c;不…

postgresql(二):pgsql导出数据

pgsql导出数据 1、概述2、导出数据2.1、导出所有库2.2、导出指定库2.3、导出指定表 3、总结 1、概述 大家好&#xff0c;我是欧阳方超&#xff0c;可以关注我的公众号“欧阳方超”&#xff0c;后续内容将在公众号首发。 今天介绍一下使用pg数据库的命令导出数据的操作。 2、导…

今天给大家分享几款好用的时间管理APP

在现代社会&#xff0c;时间是我们最宝贵的资源之一。有效地管理时间可以提高我们的工作和学习效率&#xff0c;从而实现更好的生活和工作质量。随着技术的不断发展&#xff0c;越来越多的时间管理APP涌现出来。今天&#xff0c;我想向大家分享几款好用的时间管理APP&#xff0…

没有有效的提示词(Prompt),要 Stable Diffusion 何用?

再好的prompt&#xff0c;不如有个简单的prompt工具。 本文推荐一个日本人写的prompt插件&#xff0c;我进行了汉化&#xff0c;并补充了3000多个提示词。只需要鼠标点点就可以了&#xff01;&#xff01;&#xff01; 引子&#xff1a; 今天去看了看Stable Diffusion插件版本…

MobPush Android常见问题

配置了默认点击跳转界面&#xff0c;对所有通道都有效吗 只对MobPush、魅族、小米、华为、OPPO、VIVO通道有效&#xff0c;对FCM通道无效。 如何获取回调参数 进程存活的情况下&#xff0c;可在我们的回调监听中看到通知详情&#xff0c;可以根据回调参数进行处理。 详情请查…

阿里云ECS云服务器的云盘使用

在我阿里云控制台上&#xff0c;可以看到有额外的磁盘&#xff08;2个实例&#xff0c;3个磁盘&#xff09; 找到对应云服务实例&#xff0c;看到了云盘信息 状态显示的挂接点是&#xff1a;/dev/xvdb 进入服务器却无法找到&#xff0c;也无法挂载 执行命令&#xff1a;fdisk …

c# 实现条件编译

创建三个不同的项目配置&#xff0c;分别代表不同的平台&#xff0c;在 Visual Studio 中&#xff0c;可以通过右键单击项目&#xff0c;选择“属性”&#xff0c;然后在“生成”选项卡下配置不同的条件编译符号。 针对 Windows 平台&#xff1a;在“生成”选项卡的“条件编译…

iOS--编译

前言 iOS 开发中使用的是编译语言&#xff0c;所谓编译语言是在执行的时候&#xff0c;必须先通过编译器生成机器码&#xff0c;机器码可以直接在CPU上执行&#xff0c;所以执行效率较高。他是使用 Clang / LLVM 来编译的。LLVM是一个模块化和可重用的编译器和工具链技术的集合…

Tomcat之配置文件详解

Tomcat 目录 安装好 Tomcat 后&#xff0c;打开它的文件夹&#xff0c;可以看到以下目录 bin:存放各种启动、关闭和其它程序的脚本 conf:配置文件及相关数据文件存放的目录 lib:Tomcat 使用的库文件存放的目录&#xff0c;如存放 Servlet 规范的 API logs:默认日志文件存放…

centos 配置好网络后无法ping 通百度

问题&#xff1a; ping 自己配置的ip地址能够ping通&#xff0c;ping 连接的WiFi &#xff08;可以上外网&#xff09;地址也能ping通&#xff0c;但是ping www.baidu.com 却ping不同&#xff1b; 配置 处理方法&#xff1a; 我的虚拟机开通了三张网卡&#xff0c;150段…

更新NGINX域名证书文件

背景&#xff1a; 由于域名正式认证即将要到期&#xff0c;需要更新基于nginx的域名证书文件。 一、更新nginx域名证书文件 1、查看对应域名使用的正式文件名 # 查看使用的域名证书文件 # 我的环境配置https的nginx相关配置文件是&#xff1a;ierp_https.confcat /usr/loca…

Vue3+Vite+Pinia+Naive后台管理系统搭建之二:scss 的安装和使用

前言 如果对 vue3 的语法不熟悉的&#xff0c;可以移步 Vue3.0 基础入门&#xff0c;快速入门。 1. 安装依赖 yarn add sass -D // or npm install sass -D 2. 页面样式初始化 reset.scss /* 新建 src/assets/style/reset.scss */ /* 页面样式初始化 */ html, body, div, s…

前端Vue自定义水平步骤条组件

随着技术的发展&#xff0c;开发的复杂度也越来越高&#xff0c;传统开发方式将一个系统做成了整块应用&#xff0c;经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改&#xff0c;造成牵一发而动全身。 通过组件化开发&#xff0c;可以有效实现…

edk2 security boot校验流程

edk2整体架构 关于安全校验的核心逻辑 Code\Edk2\MdeModulePkg\Universal\SecurityStubDxe\SecurityStub.c Status gBS->InstallMultipleProtocolInterfaces (&mSecurityArchProtocolHandle,&gEfiSecurity2ArchProtocolGuid,&mSecurity2Stub,&gEfiSecurit…

神经网络架构设计常见问题及解答

如果你是人工神经网络 (ANN) 的初学者&#xff0c;你可能会问一些问题。 比如要使用的隐藏层数量是多少&#xff1f; 每个隐藏层有多少个隐藏神经元&#xff1f; 使用隐藏层/神经元的目的是什么&#xff1f; 增加隐藏层/神经元的数量总是能带来更好的结果吗&#xff1f; 使用什…