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语言的小伙伴,可以考虑使用该方法。

学习资料/接口/项目等需要领取:需要+\/ →it7411

最新软件测试+进阶测试全套【自学资料包】

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沈伟-GodGreat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值