Jmeter—正则表达式提取器使⽤
在jmeter⾥正则表达式⽤的位置⽐较多。
⼀、正则表达式
功能是从请求的响应结果中取到需要的内容,作为下⼀个接⼝的⼊参从⽽实现关联。正则表达式提取器可配合Debug Sampler来查看各变量取值。
要关联这个
user_id":"10145"
说明:
简单介绍⼀下Jmeter正则表达式提取器的使⽤⽅法。
1、添加Jmeter正则表达式提取器
在具体的Request下添加Jmeter正则表达式提取器(Jmeter正则表达式在“后置处理器”下⾯)
2、Jmeter正则表达式提取器控制⾯板,截图如下:
位置1:名称及注释
位置2:正则表达式提取内容的范围。(关于各字段的详细说明请查阅协议的相关说明)
位置3:正则表达式提取的相关设置
引⽤名称:⾃⼰定义的变量名称,后续请求将要引⽤到的变量名,如填写的是:user_id,后⾯的引⽤⽅式是${user_id}
正则表达式:提取内容的正则表达式,相当于lr中的关联函数
【() 括起来的部分就是需要提取的,对于你要提的内容需要⽤⼩括号括起来】
【. 点号表⽰匹配任何字符串】
【+ ⼀次或多次】
【?在到第⼀个匹配项后停⽌】
模板:⽤$$引⽤起来,如果在正则表达式中有多个正则表达式(多个括号括起来的东东),则可以是$2$,$3$等等,表⽰解析到的第⼏个值给user_id。例如:$1$表⽰匹配到的第⼀个值
匹配数字:0代表随机取值,-1代表所有值,此时提取结果是⼀个数组,其余正整数代表第⼏个匹配的内容提取出来。如果匹配数字选择的是-1,还可以通过
${user_id_1}的⽅式来取第1个匹配的内容,${user_id_2}来取第2个匹配的内容。
缺省值:正则匹配失败时,取的值
问题1:(.+?) 与(.*?) 区别
(.+?) 匹配⼀个以上
(.*?) 匹配0个及以上,要取的值是空值的时候可以取到
⽐如labelId":""; 要取labelId的值,使⽤(.+?) 匹配不到值,使⽤(.*?) 就可以取到值为空对应写法为 labelId":"(.*?) ";
如果正则中有转义怎么办?
id?labelId":"1290" 正则写法 id\?labelId":"(.+?)"
labelId\":\"1290\" 正则写法 labelId\\":\\"(.+?)\\"
labelId":(1290), 正则写法 labelId":\((.+?)\),
问题2:⼀个表达式匹配多个参数
调⽤⽅法${list_g1} ${list_g2}
例如,假设:
引⽤名:RefName
正则表达式:name=”(.+?)” value=”(. + ?)”
正则化工具包模板:$1$$2$
以下的变量将被设置:
RefName:
RefName_g:groups的数量(在此为2)
RefName_g0:name=”file.name” value=””
RefName_g1:file.name
RefName_g2:
---------------------
作者:约会远⾏
来源:CSDN
原⽂:blog.csdn/yue530tomtom/article/details/76571632
版权声明:本⽂为博主原创⽂章,转载请附上博⽂链接!
3、⼀种不是很常见的情况是有若⼲个匹配数据,使⽤正则表达式测试器测试的结果如下:
若希望取到17这个值,则对应的是第⼆列第⼆⾏($2$, ${javawd_g2}),如果是第三列第四⾏的数据,则对应的是($3$,${javawd_g4})这种情况在Jmeter正则表达式提取器和HTTP请求中的设置如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论