当前位置:

P15JMeter 正则表达式提取器Regular Expression Extractor

访客 2024-01-05 1298 0


一、正则表达式提取器(RegularExpressionExtractor)参数说明

接口需要关联时,可以通过正则表达式提取所需要的值

右键>>>添加>>>后置处理器>>>正则表达式提取器(RegularExpressionExtractor)

Applyto

  • Mainsampleandsub-samples:匹配范围包括当前父取样器并覆盖子取样器

  • Mainsampleonly:默认;匹配范围是当前父取样器

  • Sub-samplesonly:仅匹配子取样器

  • JMeterVariableNametouse:支持对Jemter变量值进行匹配(输入框内可输入jmeter的变量名称)

要检查的响应字段(Filedtocheck)

  • 主体(Body):响应数据的主体部分

  • Body(unescaped):针对替换了的响应码部分

  • BodyasaDocument:返回内容作为一个文档进行匹配

  • ResponseHeaders:响应头部分

  • RequestHeaders:请求头部分

  • URL:URL链接

  • 响应代码(ResponseCode):响应码。如HTTP返回码200代表成功

  • 响应信息(ResopnseMessage):响应信息。比如处理成功返回“成功”字样,或者“OK”字样

(1)、引用名称(Nameofcreatedvariable):请求要引用的变量名称,如填写result_num

(2)、正则表达式(RegularExpression):业务对应的正则表达式

"id":"(.*?)","name":(.\*?)"

(3)、模板(Template):对应正则表达式的组号,从1开始;比如:$1$表示取id的值,$2$表示取name的值,也就是对应到表达式中的第几个括号

(4)、匹配数字(0代表随机)(MatchNo.(0forRandom):0代表随机取值,n取第几个匹配值,-1匹配所有;比如:取1表示报文中的第1个对象匹配,取2表示报文中的第2个对象匹配

(5)、缺省值(DefaultValue):如果参数没有取得到值,那默认给一个值让它取

正则表达式-教程|菜鸟

二、准备工作

慕慕生鲜:http://111.231.103.117/#/login

  • 进入网页后,登录,页面提供了账户和密码

  • 搜索框输入“虾”

  • 右键检查或按F12,打开调试工具,点击搜索

三、测试计划设计

(1)、测试计划右键<<<添加<<<配置元件<<<HTTP请求默认值

  • 协议:http

  • 服务器名称或IP:111.231.103.117

  • 端口:8083

  • 内容编码:utf-8

(2)、在网页中,调试中点击网络,找到请求,点击标头找到请求标头,复制所有请求标头

(3)、测试计划右键<<<添加<<<配置元件<<<HTTP信息头管理器

  • 点击从剪切板添加,会将复制的值自动添加进去

(4)、测试计划右键<<<添加<<<线程(用户)<<<线程组

(5)、在网页中,调试中点击网络,找到请求,点击负载,复制参数值

(6)、线程组右键<<<添加<<<取样器<<<HTTP请求

  • 协议:GET

  • 路径:/product/list

  • 点击从剪切板添加,会自动添加;也可手动添加

(7)、HTTP请求右键<<<添加<<<后置处理器<<<正则表达式提取器

  • 勾选Mainsampleandsub-samples

匹配范围包括当前父采样器并覆盖子采样器

  • 引用名称:userParam

变量名称:userParam

  • 正则表达式:"id":(.*?),"name":"(.*?)

(.*?):表示匹配任意字符

HTTP请求返回的响应数据响应体中的返回数据格式:[{"id":39,"name":"即食大虾","image":"http://111.231.103.117:8083/images/new-xia.png","detail":"干虾烤虾大对虾干500g淡干烤海虾干货海鲜干货年货","categoryId":13,"price":40,"stock":21925,"status":1,"createTime":"2020-06-2816:06:34","updateTime":"2020-02-1100:51:59"},{"id":27,"name":"波士顿大龙虾鲜活冰鲜海鲜水产大只装波龙澳洲龙虾400-500g一只装","image":"http://111.231.103.117:8083/images/new-longxia.png","detail":"类别:澳洲龙虾特产品类:澳洲龙虾国产/进口:国产保存状态:冰鲜原产地:中国大陆","categoryId":13,"price":222,"stock":22123,"status":1,"createTime":"2020-06-2816:06:34","updateTime":"2020-02-1100:11:30"}]

  • 模板:$2$

取第二个参数

  • 匹配数字(0代表随机):2

取第二组数据;第二组数据中的id和name

(8)、线程组右键<<<添加<<<监听器<<<查看结果树

(9)、线程组右键<<<添加<<<取样器<<<调试取样器

(10)、点击启动,点击查看结果树,查看请求及取样器信息

HTTP请求中的响应数据,响应体中的数据可以看到,一共有两个符合查询规则的数据

(11)、点击调试取样器,查看响应数据下的响应体

userParam:正则表达式提取的参数名,获取到的参数值

userParam_g:第2组

userParam_g0:第二组的数据,id和name

userParam_g1:第二组数据的第一个参数,id

userParam_g2:第二组数据的第一个参数,id

(12)、线程组右键<<<添加<<<取样器<<<JSR223Sampler,编写脚本,打开日志,清除全部,点击启动

点击选项菜单,点击日志查看

log.info("输出变量:${userParam}")log.info("输出变量:"vars.get("userParam"));

如图:可以使用变量名获取参数值

发表评论

  • 评论列表
还没有人评论,快来抢沙发吧~