JMeter测试HTTP接口问题记录02-正则提取器

1、首先要对正则表达式有初步的了解,在Jmeter中使用的正则表达式比较简单,需要记住常用的匹配符合表达式即可完成测试工作,常用的特殊字符含义如下:

特殊字符:

()   标记一个表达式的开始和结束的位置。字表达式可以获取供以后使用,如果要匹配括号字符,请使用转义字符\(  和 \)

  .       匹配除换行符以外的任何单字符  

  *      匹配前面的子表达式0次或多次。如果要匹配*号,则需要使用转义字符  \*

  +      匹配前面的子表达式1次或多次。 如果要匹配+,  则需要使用转义字符\+

  ?     匹配前面的子表达式0次或一次。当该字符紧跟在任何一个其他限定符 *  .  + n m等后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。

样例:

  (.*?)    含义: 尽可能少的匹配,可以为空

  (.+?)    含义:尽可能少的撇皮,不能为空

 以上两个样例在Jmeter的参数提取中运用非常广泛,下面看一下Jmeter中正则提取器的使用

2、Jmeter中正则提取器的使用

  首先介绍Jmeter正则提取器的页面配置:

 

 

位置1:名称及注释

位置2:正则表达式提取内容的范围。(关于各字段的详细说明请查询协议的相关说明)

位置3:正则表达式提取的相关设置

  -引用名称:自己定义的变量名称,后续请求将要引用到的变量名,如填写的是:user_id,后面的引用方式是${user_id}

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

  -() 小括号括起来的部分就是要提取的内容,对于自己要提取的内容要用小括号括起来

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

  - + 加号表示匹配一次或多次

  - ? 表示 非贪婪  匹配第一个匹配项后停止

  模板:$$引用起来,如果在正则表达式中有多个正则表达式(多个小括号括起来的东东),则可以是$2$,$3$等等,表示解析到的第几个值给user_id。例如 $1$表示匹配到的第一个值。

  匹配数字:0代表随机取值,-1代表所有值,此时结果是一个数组,其余正整数代表第几个匹配的内容提取出来。如果匹配数字选择的是-1,还可以通过${user_id_1}的方式来取第一个匹配的内容,${user_id_2}来取第2个匹配的内容。

缺省值:正则表达式匹配失败时,取的值。

 

问题1:(.+?) 与 (.*?)区别

(.+?) 匹配一个以上

(.*?)匹配0个及以上,要取的值是空值的时候可以取到。

比如: labelld:""; 要取labelled的值,使用(.+?)匹配不到值,使用(.*?)就可以取到值  空;对应的写法为label:"(.*?)";

问题2:一个表达式匹配多个参数,返回的是一个一维数组

 调用方法:

${list_g1}   ${list_g2}

${list_ALL} 获取全部的值

问题3:参数匹配出来的是一个二维数组怎么获取值,匹配数字填写-1 代表获取所有的值

 

 

看到那调试取样器:

 

 则变量名称就是feeItemId_1_g1,在其他请求接口中引用${feeItemId_1_g1}.

 

posted @ 2022-03-17 11:30  GalaxyStar  阅读(106)  评论(0编辑  收藏  举报