目录
2. 示例:通过HTTP请求取样器获取MySQL数据库表的数据,用正则表达式提取器从数据中提取需要的用例信息
2.4 在线程组中,添加元件:HTTP Request取样器
【写在前面】
正则表达式相关的知识点汇总,可参考此文: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
正则匹配失败时,将这里设置的值赋给上面的变量"引用名称"。