JMeter后置处理器之正则提取

一、背景


在接口自动化或者性能测试中,当请求发送后,需要判断请求发送后,返回的内容是否与预期一致,所以需要进行断言,断言的方法很多,其中正则提取信息,应用非常广泛,具体如下。


二、正则提取器简介


1、正则提取器

启动jmeter,添加线程组,右键线程组->添加->后置处理器->正则表达式提取器。

参数名称 描述
Apply to 作用范围的意思。选项详解如下所示:
Main sample only - 仅作用于主节点的取样器Main sample(默认选择这个);
Sub-samples only - 仅作用于子节点的取样器Sub-sample;
Main sample and sub-samples - 作用于主节点的取样器及其子节点的取样器;
JMeter Variable name to use - 仅作用于输入框中输入的变量,从指定变量值中提取需要的值。
Field to check 要检查的响应字段,也就是在响应内容的哪个区域进行正则匹配。选项详解如下所示:
Body :响应内容的主体内容(默认选择这个);
Body (unescaped):所有html转义字符都被替换后的响应体。需要注意的是,jmeter不会根据上下文处理html转义字符,所以可能会有不正确替换,另外,该选项很影响性能,一般不建议选择;
Body as a Document:通过Apache Tika,从各种类型的文档中提取文本。注意,该选项很影响性能,一般不建议选择;
Response Headers:响应头;
Request Headers: 请求头;
URL:请求的url地址;
Response Code :响应状态码;
Response Message :响应消息。
Name of created variable 引用名称,也就是用于存储正则表达式匹配的结果的变量名称,方便后续操作调用。
Regular Expression 正则表达式,用于分析响应数据的正则表达式,除非使用$0$组,否则必须至少包含一组括号。
Template 模板。如果正则表达式有多个提取结果,则结果是数组形式,模板$1$,$2$等,表示把解析到的第几个值赋给变量,并且从1开始匹配。
$1$ 表示 group1
$2$ 表示 group2
$0$ 表示整个匹配的整个表达式
Match No. (0 for Random) 正则表达式匹配数据的结果可以看作一个数组,表示如何取值。
0代表随机取值;
-1代表全部取值;
大于0的正数N-表示选择第N个匹配的值(1表示取第一个值)。
Default Value 缺省值,如果表达式没有取得到值,就使用这个默认值
Use empty default value 勾选此项后,如果未提取到值,则给变量赋予空字符串,而不是null

2、正则表达式

注意正则表达式解析的响应结果,至少包含一组(),以捕获匹配的字符串,除非模板使用$0$。

字符 描述
* 匹配前面的子表达式零次或多次。
+ 匹配前面的子表达式一次或多次。
? 匹配前面的子表达式零次或一次。
n 是一个非负整数。匹配确定的 n 次。
n 是一个非负整数。至少匹配n 次。
m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
^ 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \n 或 \r 之后的位置匹配。
$ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前的位置匹配。
. 匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 . 。
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。

详情可以见参考中的链接。


三、实例演示

这里以请求百度为例,并提取出百度搜索的标题“百度一下,你就知道”。具体配置如下:

1、配置请求头

2、配置请求

3、配置正则提取

其结果如下图所示:


四、参考

1、官网:http://jmeter.apache.org/usermanual/regular_expressions.html

2、官网:http://jmeter.apache.org/usermanual/component_reference.html#Regular_Expression_Extractor

3、天气预报:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?op=getRegionCountry

4、正则表达式:https://www.w3cschool.cn/zhengzebiaodashi/regexp-syntax.html

posted @ 2022-11-12 11:04  xyztank  阅读(258)  评论(0编辑  收藏  举报