JMeter练习(六):正则表达式提取器的简单使用示例

目录

1. 正则表达式提取器页面解析

2. 示例:通过HTTP请求取样器获取MySQL数据库表的数据,用正则表达式提取器从数据中提取需要的用例信息

2.1 准备工作:数据库表中的用例信息

2.2 准备工作:启动SpringBoot项目

2.3 在JMeter中,新建测试计划,添加线程组

2.4 在线程组中,添加元件:HTTP Request取样器

2.5 在线程组中,添加元件:HTTP默认请求值

2.6 在HTTP取样器下,添加元件:HTTP信息头管理器

2.7 在HTTP取样器下,添加元件:正则表达式提取器

2.8 在线程组中,添加元件:察看结果树

2.9 在线程组中,添加元件:调试取样器


【写在前面】

正则表达式相关的知识点汇总,可参考此文:Java知识点:正则表达式

因为下文涉及到正则表达式的知识点,所以需要先对正则表达式有初步的了解。

1. 正则表达式提取器页面解析

解析:

(1)名称

(2)注释

(3)Apply to

(4)要检查的响应字段

(5)正则表达式提取的相关设置

引用名称

自定义的变量名称,后续请求将要引用到的变量名。

如填写的是:caseName,后面的引用方式是${caseName}。

如果有多个匹配的值(符合整个正则表达式的值,多个),可以用${caseName_1},${caseName_2}...的格式获取。这里比较抽象,看下方例子。

正则表达式

提取内容的正则表达式,相当于lr中的关联函数.

最常用的是:(.+?)

() :括起来的部分就是需要提取的,对于要提取的内容需要用小括号括起来。

. :点号表示匹配任何字符串。

+:出现一次或多次。

:,非贪婪匹配,在找到第一个匹配项后停止。

模板

用$$引用起来。

如果在正则表达式中有多个正则表达式(即:多个括号括起来的部分),

则可以用$1$,$2$等,表示解析到的第几个值(第几个括号)给上面的变量caseName。

例如:$1$表示匹配到的第一个值。

匹配数字

0代表随机取值。

-1代表所有值,此时提取结果是一个数组。

其余正整数代表第几个匹配的内容提取出来。

如果匹配数字选择的是-1,还可以通过${caseName_1_g0}的方式来取第1个匹配的完整内容,${caseName_2_g0}来取第2个匹配的内容。 这里比较抽象,看下方例子。

缺省值:

正则匹配失败时,取的值。

2. 示例:通过HTTP请求取样器获取MySQL数据库表的数据,用正则表达式提取器从数据中提取需要的用例信息

2.1 准备工作:数据库表中的用例信息

 

2.2 准备工作:启动SpringBoot项目

 

2.3 在JMeter中,新建测试计划,添加线程组

2.4 在线程组中,添加元件:HTTP Request取样器

 

2.5 在线程组中,添加元件:HTTP默认请求值

在该元件中,设置访问的:协议,服务器IP,端口号,内容编码 

 

2.6 在HTTP取样器下,添加元件:HTTP信息头管理器

添加信息头管理器,信息头中要包含:Content-Type...

如果要访问的服务器还有其他限制,比如授权,token等,也在这里设置。 

 

2.7 在HTTP取样器下,添加元件:正则表达式提取器

解析:

(1)引用名称:CaseInfo

如果HTTP取样器获取到的符合正则表达式的结果有多个,则这里可以通过${caseInfo_1},${caseInfo_2}...的格式逐一获取。

每一个${caseInfo_x}都符合完整的一个正则表达式:"id":(.*?),"caseName":"case(.*?)"

比如:

${caseInfo_1}捕获组各个部分对应的内容如下:

${caseInfo_2}捕获组各个部分对应的内容如下:

(2)正则表达式:"id":(.*?),"caseName":"case(.*?)"

根据实际需求去设定。

(3)模板:$1$,$2$

如果在正则表达式中有多个正则表达式(即:多个括号括起来的部分),

则可以用$1$,$2$...等来表示解析到的第几个值(第几个括号)给上面的变量caseInfo。

注意,这里说的多个模板的情况,是在一个符合正则表达式的变量取值里的多个括号。

比如:

如果模板只写 $1$,则获取的结果中,CaseInfo只等于第一个括号的取值。

如果模板写 $1$,$2$,则获取的结果中,CaseInfo等于第一个括号和第二个括号的取值。 

小结:

这里一共获取到3个符合正则表达式的结果,因为正则表达式中存在多个模式(多个括号),

所以,如果想取第一个结果的第一个模式(括号)的取值,用:CaseInfo_1_g1 

如果想取第一个结果的第二个模式(括号)的取值,用:CaseInfo_1_g2

以此类推。 

(4)匹配数字:-1

0代表随机取值。

-1代表所有值,此时提取结果是一个数组。

其余正整数代表第几个匹配的内容提取出来。

如果匹配数字选择的是-1,还可以通过${caseInfo_1}的方式来取第1个匹配的内容,${caseInfo_2}来取第2个匹配的内容。 

设为0,则随机取值,每次只取到一个符合正则表达式的结果,运行多次,取到的可能都不一样:

设为-1,则取到所有符合正则表达式的结果,运行多次,每次都显示所有符合的结果: 

设为其他正整数,比如2,则表示取到第2个匹配的内容:  

(5)缺省值:null

正则匹配失败时,将这里设置的值赋给上面的变量"引用名称"。

 

2.8 在线程组中,添加元件:察看结果树

2.9 在线程组中,添加元件:调试取样器

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值