JMeter正则表达式提取器实践

news/2024/11/17 8:44:27/

目录

前言:

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.ppmy.cn/news/704121.html

相关文章

小米屏和展讯屏幕调试参考 写的较好(有发送速率)

MIPI LCD调试总结 http://blog.csdn.net/richu123/article/details/51394464 近来在用SSD2828驱动小米屏,没有代码,没有技术支持,自己写代码反复调试,整死我了,目前已经能正常显示图片,现在总结一下与大家…

Android:自动点击屏幕

在开发的过程中会遇到自动测试功能,比如如何自动点击按钮进行测试,当然可以使用按键精灵等工具进行测试,不过如何在程序进程中测试呢,下面就介绍下adb shell的操作,通过shell进行点击等操作。 1.模拟滑动 input swip…

android手机模拟屏幕点击

跨进程屏幕点击:可以用 sendevent /dev/input/eventX 实现,前提手机已经root。 遇到的坑: 1:adb shell可以,但是code不行,有可能是因为eventX文件没有读写权限,请chmod 777 eventX。 2&…

Windows11 的体验

没特别说明的情况下,以下基于 22000.51 简体中文版之体验 下载,参考 Windows11 真的来了 安装,参考 老爷机安装 Windows11 如果还没有,那是时候考虑注册一个微软账号了 注册网址 live.com 建议选 outlook 或 live的邮箱&…

微软官方大秀DX12:性能暴涨50%

微软和各家合作伙伴已经在各种场合展示过新一代DX12的威力,不断号称技术多么先进、画质多么精细、性能多么高涨,但是微软自己从来没有给出过性能方面的数据,直到现在。 近日,微软又放出了一段DX12、DX11对比视频,主要展…

重力感应失灵/更新win10后不能自动旋转屏幕

问题 重力感应失灵了,屏幕不能自动旋转。看设备管理器里,传感器下bosch accelerometer图标上有个黄色叹号,更新驱动软件说已是最新版本,可依然无法解决问题。 解决 删除设备,勾上下面那个删除驱动程序,刷…

android 神器 自动连接手机版下载,手机屏幕自动点击

详情 手机屏幕自动点击app是一款能够帮助用户自动点击手机屏幕的应用,用户可以自由设置点击时长、点击位置等数据,根据需要编辑辅助脚本,然后app就会对手机进行快速的点击了,轻松解放双手,可用于抢红包、游戏挂机等场景…

微软为ChatGPT打造专用超算!砸下几亿美元,上万张英伟达A100打造

萧箫 发自 凹非寺量子位 | 公众号 QbitAI 微软砸下大几亿美元,专门为训练ChatGPT打造了一台超算—— 上万张英伟达A100芯片打造,甚至专门为此调整了服务器架构,只为给ChatGPT和新必应AI提供更好的算力。 △图源:微软 不仅如此&…