JMeter正则表达式提取器实践

news2024/9/27 12:15:36

目录

前言:

apply to:

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

引用名称:

正则表达式:

模板:

匹配数字:

缺省值:


前言:

JMeter是一个流行的性能测试工具,它提供了强大的正则表达式提取器,可以从服务器响应中提取和处理数据。正则表达式提取器是基于正则表达式模式匹配的,它允许你从响应中提取特定的数据,并将其保存到变量中,以便在后续的请求中使用。

我们在使用JMeter做接口自动化的过程中,对正则表达式的使用肯定不陌生吧,那么小伙伴是否遇到过以下的场景呢?

响应报文类似下面的这样的:

我们要使用phrase后面的其中一个值。

使用正则表达式提取后匹配出多少值,提取结果如下:

现在的问题是,如果我们要使用正则表达式提取后的:使用其中的第1个和第10个值,我们应该怎么去实现呢?

肯定会有小伙伴会说,可以使用第三方的插件来实现,我用java写一个jar,把提取的值存储到map或者list里,然后用使用下标即可实现。这也是一个不错的方法,那么对于不会Java的小伙伴是不是就没有办法解决这个问题了呢?答案是否定的

小伙伴们不知道有没有认真分析过 正则表达式提取器 组件功能,已经考虑到这种场景了

apply to:

Main sample and sub-samples:作用于父节点取样器及对应子节点取样器;
Main sample only:仅作用于父节点取样器;
Sub-samples only:仅作用于子节点取样器;
JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称,即针对输入变量的值进行正则提取)。

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

主体:接口响应主体内容,默认选择此项;
Body(unescaped):针对替换了转义码的Body部分;
Body as a Document:返回内容作为一个文档进行匹配;
信息头:响应头的所有内容;
Request Headers:请求头的所有内容;
url:是对sample的url进行匹配,也就是查看结果树里请求内容的第一行url,不包含data里的请求参数;
响应代码:http响应代码,如101,200,302,404,501等;
响应信息:http响应代码对应的响应信息,例如:OK, Found(HTTP/1.1 200 OK;HTTP/1.1 302 Found)。

引用名称:

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

正则表达式:

数据提取器,一般简单的通用语法就是:左边界(.*?)右边界,左右边界就是为了能准确定位到想匹配的内容,具体语法如下:

提到正则表达式,必须要说一下匹配的两种模式:贪婪非贪婪
贪婪与非贪婪模式是两种不同的表达式匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。

模板:

对应正则表达式提取器类型,样式为:
$n$。若模板为:$0$,则为整个表达式匹配到的内容,就是包括小括号内跟小括号外的内容;
若模板为:$1$,则对应正则表达式中的第一个(.*?)所匹配的内容;
若模板为:$2$,则对应正则表达式中的第二个(.*?)所匹配的内容;
若模板为$1$$2$,则把2个(.*?)所匹配的内容拼接起来;

匹配数字:

正则表达式匹配数据的最终结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。
当为 0 时,随机返回匹配的数据。
当为 1 时,表示返回匹配结果数组的第一个元素。
当为负数(-1,-2,-100都可以)时,表示返回全部元素,并且同时会返回一个元素总数的变量。
不填写数字时,就使用下面的缺省值。

在引用时:通过${变量名_1}的方式来取第1个匹配的内容,${变量名_2}来取第2个匹配的内容。

缺省值:

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

根据前面实例,对响应结果提取如下图

那么当这里填写-1即匹配全部时,我们引用时该怎么去使用呢?

使用方法:${变量名_下标}的方式来获取,下面来验证该逻辑的正确性,正则表达式如上,

下面添加一个java请求,打印引用第1个和第10个值

打印结果如下:

我们来看下正则表达式提取的第1个和第10个值分别是:when和similar

进行对比,结果正确,那么就实现我们的需求。

和使用jar来实现的效果一样,对于不会JAVA语言的小伙伴,可以考虑使用该方法。

 作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

留【自动化测试】即可【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N5K3http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=_FQDD5qd4CZYjk9Qsbu492DEviPX0SmQ&authKey=r8q0copgJMRQ7Mo5KrdutBNlmlb5b7%2FXEUDLCKd%2BaItO2gSPEw34DPc2HndTVJ%2FM&noverify=0&group_code=574737577

 

 

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

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

相关文章

《Effective C++》 全书内容提炼总结

个人博客地址: https://cxx001.gitee.io 本文阅读说明 孔子云:“取乎其上,得乎其中;取乎其中,得乎其下;取乎其下,则无所得矣”。 对于读书求知而言,这句古训教我们去读好书,最好是…

【基础算法】穷举法

穷举法Exhaustive method是使用最广泛、设计最简单,同时最耗时的算法,也被称为暴力法、蛮力法Brute force method。 两数之和 给定一个整数数组array和一个目标值target,请在数组中找出和为目标值target的两个整数,并输出它们在数…

【PHP语言】医院安全(不良)事件报告系统源码

一、系统概述: 医院安全(不良)事件报告系统是一种用于医院管理和监管的工具,旨在帮助医疗机构识别、跟踪、分析和解决各种医疗安全事件,提高医疗质量和患者安全。 医院安全(不良)事件报告系统采…

Linux:nginx基础搭建(源码包)

安装基础环境 准备一个nginx源码包 yum -y install pcre-devel zlib-devel gcc-c useradd -M -s /sbin/nologin nginx tar xf nginx-1.12.0.tar.gz -C /usr/src/ cd /usr/src/nginx-1.12.0/ ./configure --prefix/usr/local/nginx --usernginx --groupnginx --with-http_st…

【unity】RenderFeature的应用(生成水平面的网格线)

【unity】RenderFeature的应用(生成水平面的网格线) 在URP里RenderFeature是用于后处理效果上的,也还可以实现一些特殊的效果,比如生成网格线。我们可以使用 CommandBuffer来创建地面网格,这样的话可以通过调整 Comman…

【NOSQL】redis哨兵模式、集群搭建

目录 一、redis高可用一、Redis主从复制1.1主从复制的作用1.2主从复制流程 二、搭建Rdeis主从复制2.1安装redis2.1.1环境准备2.1.2安装redis2.1.3设置环境变量2.1.4定义systemd服务管理脚本 2.2修改 Redis 配置文件(Master节点操作2.3修改 Redis 配置文件&#xff0…

【SpringMVC】| 异常处理器、基于全注解配置SpringMVC

目录 异常处理器 1. 基于配置的异常处理 2. 基于注解的异常处理(用类代替xml配置) 基于全注解配置SpringMVC 1. 创建初始化类,代替web.xml 2. 创建SpringConfig配置类,代替spring的配置文件 3. 创建WebConfig配置类&#…

哈夫曼树的原理及构造方法

目录 1. 什么是哈夫曼树 2. 为什么有哈夫曼树 3. 哈夫曼树的原理 3.1 哈夫曼树的构造方法 3.2 哈夫曼解码 3.3 几种定义 4. 哈夫曼二叉树的特点 5. 关于哈夫曼树的代码 1. 什么是哈夫曼树 哈夫曼树解决的是编码问题,给定N个权值作为N个叶子结点,构…

Springboot tomcat bean 默认作用域 singleton 情况下模拟线程不安全情况 设置多例方式 prototype

目录 写一个控制层的类 验证方法 ​编辑 分别执行如下请求,先执行等待时间久的 日志结果 结论 配置多例模式 配置文件application.properties 类加注解 配置类方式 写一个控制层的类 package com.example.ctr;import lombok.extern.slf4j.Slf4j; import …

【ISE】PlanAhead report_timing报VIOLATED问题

这里写自定义目录标题 背景ISE PR结果PlanAhead结果使用ISE twx使用PlanAhead综合、实现 问题 分析Timer Settings 结论? 背景 最近调试一个老型号FPGA,时序问题分析,方便以后参考。 ISE PR结果 在下图可以看到All Constraints Met&#x…

iOS iPadOS safari 独立Web应用屏幕旋转的时候 onresize window.innerHeight 数值不对。

iOS iPadOS safari 独立Web应用屏幕旋转的时候 onresize window.innerHeight 数值不对 一、问题描述 我有一个日记应用,是可以作为独立 Web 应用运行的那种,但在旋转屏幕的时候获取到的 window.innerHeight 和 window.innerWidth 就不对了,…

【C#】使用System.Data.SqlClient 进行简单批量操作

在实际项目开发中,可能会在定时任务里进行批量添加的操作,或者需要写一些小工具进行批量添加测试。 此篇文章就是使用System.Data.SqlClient 进行简单批量操作。 目录 1、批量插入数据1.1、示例代码1.2、列映射1.3、是否需要映射列 2、批量更新数据3、链…

ZigBee组网-基于协议栈的UART实验(实现收发)(保姆级)

目录 基于协议栈的UART实验 前言 协议栈中的TI自带UART的使用实验 UART配置基本步骤 串口初始化 串口发送 串口接收回显 实验效果 拓展 移植我们自己UART串口 移植配置过程 实验效果 基于协议栈的UART实验 前言 与之前的Zigbee裸机实验不同,我们既可以…

神奇的MATLAB解密工具,让你轻松解密.p文件!

大家都知道,MATLAB是一款功能强大的数学软件,但是在进行代码保护和共享方面,却存在一些困难。这时候,一款优秀的MATLAB解密工具就显得尤为重要。它可以帮助我们解决诸多问题,比如.p文件解密、p文件转m代码等。接下来&a…

mallocstacklogging和MallocStackLoggingNoCompact引起的app文稿数据快速增加

最近由于定位一个iOS16系统适配引起的闪退设置了mallocstacklogging和MallocStackLoggingNoCompact。 配置如下: 在上线前测试,结果发现手机存储空间不足。删除了手机的很多图片后,测试不到两分钟,手机存储空间又不足了。查看app…

Flink运行原理

Apache Flink是什么?对于这个问题,Apache软件基金会官方给出了定义:Flink是一种框架和分布式处理引擎,主要用于对无界和有界数据流进行有状态计算。 本文将从以下几个方面来了解flink运行原理: 【Flink运行时四大组件…

骨传导耳机可以长期佩戴吗,几款佩戴舒适的骨传导耳机清单

骨传导耳机是通过耳朵传声方式,提高了听神经的使用频率,对听觉系统所产生刺激会随之下降。目前骨传导耳机主要应用于运动和娱乐两大领域,尤其是在运动场景中骨传导耳机能够避免传统耳机因佩戴入耳式耳机造成的听力下降问题,更能增…

Python批量将doc转成docx并读取docx的内容

有时候我们需要将doc的文件转成docx的格式,但是如果直接修改文件名后缀的话有时候会没有效果,今天我们利用python批量将doc后缀的word文档转成docx的格式。 也找了很多方法,最终还是找到了就是利用win32com去解决这个问题 很多人在执行这一…

【MySQL】不就是事务

前言 嗨咯,小伙伴们大家好呀,我已经一个星期没有更新了,实在抱歉!本期我们要学习MySQL初阶中的最后一课,MySQL数据库中的事务也算是近几年面试必考的问题,所以我们一定要认真学习。 目录 前言 目录 一、事…

学会用智慧轻松的方式过生活

曾经,有位远在黑龙江的女性福主告诉峰民,她说她活不久了。 峰民很是惊讶,不可能吧,你才39岁啊, 她说:我查出了子宫有瘤,峰民听后就说,没事,放心,肯定是良性。…