性能测试-Jmeter正则表达式提取
- 2020 年 2 月 1 日
- 笔记
jmeter中,接口自动化的关键在于参数关联。比如需要登录的接口,如何调用登录口令?一个增删改查的闭环,如何将接口参数上下传递?在jmeter中,可以利用正则表达式提取器来帮助我们完成这一动作。
1、正则表达式提取器
右键添加后置处理器→正则表达式提取器,正则表达式提取器界面如下:

说明:
后置处理器:在请求结束或者返回响应结果时发挥作用
正则表达式提取器:允许用户从服务器的响应中通过使用perl的正则表达式提取值。该元素会作用在指定范围取样器,用正则表达式提取所需值,生成模板字符串,并将结果存储到给定的变量名中。
APPly to:作用范围(返回内容的断言范围)
>Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器
>Main sample only:仅作用于父节点的取样器
>Sub-samples only:仅作用于子节点的取样器
>JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)
要检查的响应字段:需要检查的响应报文的范围
>主体:响应报文的主体
>Body(unescaped):主体,响应的主体内容且替换了所有的html转义符,注意html转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用
> Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能
> Response Headers:响应信息头
>Request Headers:请求信息头
> URL:统一资源定位符,即Internet上用来描述信息资源的字符串
>Response Code:响应状态码,比如200、404等
>Response Message:响应信息
2、正则表达式引用
引用名称:定义一个变量,供后续请求引用
一般(.+?)和(.*?)能够满足我们80%的使用场景。所以,一般的正则表达式都可以写成下面这2种
左边界(.+?)右边界
左边界(.*?)右边界
left对应匹配目标的起始字符
right对应匹配目标的结束字符
正则表达式:利用正则将需要的数据提取出来
() 括起来的部分就是需要提取的,对于你要提的内容需要用小括号括起来
. 点号表示匹配任何字符串
+ 一次或多次
? 在找到第一个匹配项后停止

模板:用$$引用起来,如果在正则表达式中有多个正则表达式(多个括号括起来),则可以是$N$等,表示提取第N个括号里面的值
匹配数字 -1:表示取所有返回值,此时提取结果是一个数组,其余正整数代表第几个匹配的内容提取出来。如果匹配数字选择的是-1,后续还可以通过${XXX_1}的方式来取第1个匹配的内容,${XXX_2}来取第2个匹配的内容。
匹配数字1:表示取第一个返回值
匹配数字0:表示随机取一个返回值
缺省值:正则匹配失败时取的值
3、示例
a.提取一个Name


b.提取全部Name

c.表达式同时提取Name和population,并传出两个参数

d.条件判断取值
