JMeter正则表达式提取器和JSON提取器基础用法,小白必会!
最近在利用JMeter做接口自动化测试,正则表达式提取器和JSON提取器用的还挺多,想着分享下,希望对大家的接口自动化测试项目有所启发。
在 JMeter 中,正则表达式和 JSON 提取器都是用于从响应数据中提取所需内容,但它们的使用场景略有不同。正则表达式提取器适用于处理非结构化或不规则格式的响应数据,而 JSON 提取器适用于处理结构化的 JSON 响应数据。
正则表达式提取器:正则表达式提取器是 JMeter 的内置功能,用于从响应数据中提取特定模式的文本。它适用于那些响应数据中的内容没有明确定义结构的情况。
例如,当响应数据是自由格式的文本、HTML、XML 或其他非结构化数据时,可以使用正则表达式提取器来捕获信息,需要编写适当的正则表达式来匹配并捕获所需的内容。
JSON 提取器:JSON 提取器是 JMeter 的插件,专门用于从 JSON 格式的响应数据中提取数据。它针对 JSON 数据结构进行了优化,并提供了更便捷的方式来解析和提取 JSON 数据。
可以使用 JSON 提取器根据 JSON 路径表达式来定位和提取 JSON 对象、数组或属性中的值。JSON 提取器更适用于处理结构化的响应数据,如 API 响应返回的 JSON 格式数据。
一、使用场景
A接口返回的JSON数据如下,B接口需要用到A接口的返回参数id_card_num,所以需要将A接口返回的参数提取出来,存在一个变量例如card_num_test中,在B接口中直接以${card_num_test}的形式调用即可。
二、 正则表达式提取器
1、新建http请求
2、添加正则表达式提取器
选中http请求,鼠标右键–添加–后置处理器–正则表达式提取器
3、填写正则表达式的参数
名称:自定义
Apply to :
- Main sample and sub-samples:匹配范围包括当前父取样器并覆盖子取样器
- Main sample only:默认,匹配范围是当前父取样器(大多数情况下选择默认即可)
- Sub-samples only :仅匹配子取样器
- JMeter Variable Name to use:支持对 JMeter变量值进行匹配(输入框内可输入jmeter的变量名称)
要检查的响应字段:
- 主体:响应数据的主体部分
- Body(unescaped):针对替换了的响应码部分
- Body as a Document:返回内容作为一个文档进行匹配
- 信息头
- Request Headers:请求头部分
- URL:URL链接
- 响应代码:响应码,例如HTTP返回码200表示成功
- 响应信息:响应信息,例如处理成功返回“成功”字样,或者“OK”字样
引用名称:下一个请求要引用的参数名称,如填写card_num_test,则可用$card_num_test}引用它。
正则表达式:编写一个正则表达式来匹配要提取的内容,例如"id_card_num":“(.+?)”
():括起来的部分就是要提取的。
.:匹配任何字符串。
+:一次或多次。
?:不要太贪婪,在找到第一个匹配项后停止。
模板:指定如何处理匹配结果,例如− 1 -1−1表示取所有值,0 00表示随机取值,1 11表示取第一个值,2 22表示取第二个值
匹配数字:1代表全部取值,0表示随机取值
缺省值:如果正则表达式取不到值,则使用此缺省值
4、添加一个Debug Sampler
可以用来调试,验证正则表达式是否正确。
5、执行脚本,查看结果
与接口返回的值一致,证明正则表达式编写正确,B接口需要用到这个值的时候,直接以${card_num_test}的形式调用。
三、JSON提取器
1、新建http请求
2、添加正则表达式提取器
选中http请求,鼠标右键–添加–后置处理器–JSON Extractor
3、填写JSON提取器的参数
名称:自定义
Apply to :应用范围,一般默认为Main sample only,可根据实际使用需求选择
Main sample and sub-samples:作用于主请求和子请求
Main sample only:仅作用于主请求
Sub-samples only:仅作用于子请求
JMeter Variable:作用于JMeter变量(输入框内可输入JMeter的变量名称);用法可用于提取正则表达式提取器中的值
Names of Created variables:作为引用的变量名称,多个变量名通过分号;隔开,自定义
JSON Path expessions:格式为 . (层级名称),本次示例为 .(层级名称),本次示例为.(层级名称),本次示例为.data.id_card_num
Match No.:取第几个数值,0代表随机,-1代表取全部数组数据,1代表取一个变量数值,与设置的变量名称有关,本次示例填-1(说明:如果填写1,后面引用变量的时候直接用c a r d n u m t e s t 即可,如果填写 − 1 ,返回的是一个数组,后面引用变量的时候要用 {card_num_test}即可,如果填写-1,返回的是一个数组,后面引用变量的时候要用cardnumtest即可,如果填写−1,返回的是一个数组,后面引用变量的时候要用{card_num_test_1},${card_num_test_2}的形式)
Compute concatenation var(suffix_ALL):匹配到的所有数值并保存,默认为空即可
Default Value:取值失败时展示的内容,默认为空即可
4、添加一个Debug Sampler
可以用来调试,验证正则表达式是否正确。
5、执行脚本,查看结果
与接口返回的值一致,证明正则表达式编写正确,B接口需要用到这个值的时候,直接以${card_num_test_1}的形式调用。
今天的分享就到这里~
行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
相关文章:

JMeter正则表达式提取器和JSON提取器基础用法,小白必会!
最近在利用JMeter做接口自动化测试,正则表达式提取器和JSON提取器用的还挺多,想着分享下,希望对大家的接口自动化测试项目有所启发。 在 JMeter 中,正则表达式和 JSON 提取器都是用于从响应数据中提取所需内容,但它们…...

5-26作业
网络聊天室 服务器: 1 #include <myhead.h>2 int main(int argc, const char *argv[])3 {4 if(argc!3)5 {6 printf("请输入IP和端口号\n");7 return -1;8 }9 int sfd socket(AF_INET, SOCK_DGRAM, 0);10 if(…...

2024.05.28学习记录
1. 小林coding 计网复习 2.代码随想录刷题. 图论.和复习数组.链表 3.rosebush完成select组件...

撤销最近一次的提交,使用git revert 和 git reset的区别
文章目录 工作区 暂存区 本地仓库 远程仓库需求:已推送到远程仓库,想要撤销操作git revert (添加新的提交来“反做”之前的更改,云端会残留上次的提交记录)git reset(相当于覆盖上次的提交)1.--…...

MySQL详细安装、配置过程,多图,详解
本文适合centos7环境下安装mysql,在安装和卸载过程中,都在root用户下完成。文章目录 清理环境获取mysql官方yum源安装mysql yum源安装mysql服务安装报错解决办法验证是否安装完成启动mysql服务登录服务方法一:方法二:方法三&#…...

音视频学习规划
文章目录 概述闲聊点 小结 概述 最近在学习音视频,觉得还是要先写个提纲,给自己制定下学习路线及目标。先写下我的个人流程及思路。 ffmpeg的命令ffmpeg api播放器流媒体RTMP,HLS 闲聊点 先说下学习命令行吧,学习命令行是为了…...

代码随想录算法训练营第21天|● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先
二叉搜索树的最小绝对差 题目连接 https://leetcode.cn/problems/minimum-absolute-difference-in-bst/ 思路: 利用二叉搜索树的中序遍历的特性,将二叉树转成有序数组,进而求任意两个数的最小绝对差。 代码 /*** Definition for a bina…...

K8S中Prometheus+Grafana监控
1.介绍 phometheus:当前一套非常流行的开源监控和报警系统。 运行原理:通过HTTP协议周期性抓取被监控组件的状态。输出被监控组件信息的HTTP接口称为exporter。 常用组件大部分都有exporter可以直接使用,比如haproxy,nginx,Mysql,Linux系统信…...

题解:CF1968F(Equal XOR Segments)
题解:CF1968F(Equal XOR Segments) 题目翻译:定义一个序列是好,当且仅当可以将其分成大于 1 1 1 份,使得每个部分的异或和相等。现在给定一个长度为 n n n 的序列 a a a,以及 q q q 次查询…...

Python操作MySQL实战
文章导读 本文用于巩固Pymysql操作MySQL与MySQL操作的知识点,实现一个简易的音乐播放器,拟实现的功能包括:用户登录,窗口显示,加载本地音乐,加入和删除播放列表,播放音乐。 点击此处获取参考源…...

【Linux系统】进程间通信
本篇博客整理了进程间通信的方式管道、 system V IPC的原理,结合大量的系统调用接口,和代码示例,旨在让读者透过进程间通信去体会操作系统的设计思想和管理手段。 目录 一、进程间通信 二、管道 1.匿名管道 1.1-通信原理 1.2-系统调用 …...

北大国际医院腹膜后纤维化课题组 多学科协作开辟治疗新径
腹膜后纤维化(Retroperitoneal Fibrosis,简称RPF)是一种罕见的自身免疫性疾病,其核心特征是纤维组织的异常增生与硬化。这种疾病主要影响肾脏下方的腹主动脉和髂动脉区域,增生的纤维组织会逐渐压迫周围的输尿管和下腔静脉,从而导致一系列并发症,包括主动脉瘤、肾功能衰竭等,甚至…...

面试数据库八股文十问十答第七期
面试数据库八股文十问十答第七期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)索引是越多越好吗ÿ…...

【C++题解】1133. 字符串的反码
问题:1133. 字符串的反码 类型:字符串 题目描述: 一个二进制数,将其每一位取反,称之为这个数的反码。下面我们定义一个字符的反码。 如果这是一个小写字符,则它和字符 a 的距离与它的反码和字符 z 的距离…...

【Python编程实战】基于Python语言实现学生信息管理系统
🎩 欢迎来到技术探索的奇幻世界👨💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…...

AI网络爬虫:批量爬取电视猫上面的《庆余年》分集剧情
电视猫上面有《庆余年》分集剧情,如何批量爬取下来呢? 先找到每集的链接地址,都在这个class"epipage clear"的div标签里面的li标签下面的a标签里面: <a href"/drama/Yy0wHDA/episode">1</a> 这个…...

md5强弱碰撞
一,类型。 1.弱比较 php中的""和""在进行比较时,数字和字符串比较或者涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。按照此理,我们可以上传md5编码后是0e的字符串,在…...

【Docker故障处理篇】运行容器报错“docker: failed to register layer...file exists.”解决方法
【Docker故障处理篇】运行容器报错“docker: failed to register layer...file exists.” 一、Docker环境介绍2.1 本次环境介绍2.2 本次实践介绍二、故障现象2.1 运行容器消失2.2 重新运行容器报错三、故障分析四、故障处理4.1 停止 Docker 服务:4.2 备份重要数据4.3 清理冲突…...

小红书-社区搜索部 (NLP、CV算法实习生) 一面面经
😄 整个流程按如下问题展开,用时60min左右面试官人挺好,前半部分问问题,后半部分coding一道题。 各位有什么问题可以直接评论区留言,24小时内必回信息,放心~ 文章目录 1、自我介绍2、介绍下项目:微信-多模态小视频分类2.1、看你用了cross-att来融合多模态信息,cross…...

解读makefile中的.PHONY
在 Makefile 中,.PHONY 是一个特殊的目标,用于声明伪目标(phony target)。伪目标是指并不代表实际构建结果的目标,而是用来触发特定动作或命令的标识。通常情况下,.PHONY 会被用来声明一组需要执行的动作&a…...

linux配置防火墙端口
配置防火墙,添加或删除端口,需要有root权限。 防火墙常用命令如下: 1.查看防火墙状态: systemctl status firewalld active(running):开启状态,正在运行中 inactive(dead):关闭状态ÿ…...

sklearn线性回归--岭回归
sklearn线性回归--岭回归 岭回归也是一种用于回归的线性模型,因此它的预测公式与普通最小二乘法相同。但在岭回归中,对系数(w)的选择不仅要在训练数据上得到好的预测结果,而且还要拟合附加约束,使系数尽量小…...

三十一、openlayers官网示例Draw Features解析——在地图上自定义绘制点、线、多边形、圆形并获取图形数据
官网demo地址: Draw Features 先初始化地图,准备一个空的矢量图层,用于显示绘制的图形。 initLayers() {const raster new TileLayer({source: new XYZ({url: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/…...

医疗科技:UWB模块为智能医疗设备带来的变革
随着医疗科技的不断发展和人们健康意识的提高,智能医疗设备的应用越来越广泛。超宽带(UWB)技术作为一种新兴的定位技术,正在引领着智能医疗设备的变革。UWB模块作为UWB技术的核心组成部分,在智能医疗设备中发挥着越来越…...

Java面试题大全(从基础到框架,中间件,持续更新~~~)
从Java基础到数据库,Spring,MyBatis,消息中间件,微服务解决全部Java面试过程中的问题。(持续更新~~) Java基础 2024最新Java面试题——java基础 MySQL基础 mysql基础知识——适合不太熟悉数据库知识的小…...

零知识证明在隐私保护和身份验证中的应用
PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。 隐私保护和身份验证是现代社会中的关键问题,尤其是在数字化时代。零知识证明(Zero-Knowledge Proofs&…...

15.微信小程序之async-validator 基本使用
async-validator是一个基于 JavaScript 的表单验证库,支持异步验证规则和自定义验证规则 主流的 UI 组件库 Ant-design 和 Element中的表单验证都是基于 async-validator 使用 async-validator 可以方便地构建表单验证逻辑,使得错误提示信息更加友好和…...

元宇宙vr科普馆场景制作引领行业潮流
在这个数字化高速发展的时代,北京3D元宇宙场景在线制作以其独特的优势,成为了行业内的创新引领者。它能够快速完成空间设计,根据您的个性化需求,轻松设置布局、灯光、音效以及互动元素等,为您打造出一个更加真实、丰富…...

kotlin基础之高阶函数
Kotlin中的高阶函数、内联函数以及noinline和crossinline关键字是函数式编程中的重要概念。下面我将逐一解释这些概念的定义、实现原理、使用场景以及noinline和crossinline关键字的具体用法。 高阶函数 定义:高阶函数是接受一个或多个函数作为参数,或…...

【Python音视频技术】用moviepy实现图文成片功能
今天上班的时候看到有人群里问 图文成片怎么实现。 临时给我提供一点写作的灵感,趁着下班写一篇。这里用到 python的moviepy库, 之前文章介绍过。 大体思路:假定有4张图片,每张图片将在视频中展示2秒钟,并且图片会按照…...