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:file.namereadme.txt
RefName_g:groups的数量(在此为2)
RefName_g0:name=”file.name” value=”readme.txt”
RefName_g1:file.name
RefName_g2: readme.txt
---------------------
作者:约会远行
来源:CSDN
原文:https://blog.csdn.net/yue530tomtom/article/details/76571632
版权声明:本文为博主原创文章,转载请附上博文链接!

3、一种不是很常见的情况是有若干个匹配数据,使用正则表达式测试器测试的结果如下:

若希望取到17这个值,则对应的是第二列第二行($2$, ${javawd_g2}),如果是第三列第四行的数据,则对应的是($3$,${javawd_g4})

这种情况在Jmeter正则表达式提取器和HTTP请求中的设置如下:

 

posted @ 2018-11-19 20:27  hjianhui  阅读(15680)  评论(0编辑  收藏  举报