jmeter正则表达式提取器操作浅析

业务场景

接口测试白名单列表信息展示,接口需要实时用到变量参数token和userID,需要登录接口来进行获取

操作实现

添加的原件:

  • 右键添加线程-->线程组
  • 右键线程组-->添加-->取样器-->http请求
  • 右键-->添加-->后置处理器-->正则表达式提取器
  • 右键-->添加-->监听器-->查看结果树

登录接口:请求登录接口

其返回值展示:

  {
    "picPrefix": "http://XXXXXXX/",
    "resp": {
        "errCode": "0000",
        "errMsg": "成功",
        "permissionList": [
            XXXX      ],
        "roleList": [
            {
                "projectId": "10005",
                "roleId": "2002081123336379643"
            }
        ],
        "secret": "2005201653048689336",
        "token": "2005201653048689335",
        "userBean": {
            "createTime": "2020-02-10 13:21:11",
            "nickName": "ljt",
            "phone": "17812312312",
            "projectId": "10005",
            "pwd": "202cb962ac59075b964b07152d234b70",
            "updateTime": "2020-02-10 13:21:11",
            "userId": "200210132110953498"
        }
    },
    "token": "2005201653051849048"
}

正则表达式提取器:

 

各配置项介绍:

APPly to:作用范围

1、Main sample and sub-samples:作用于主节点的取样器及对应子节点的取样器

2、Main sample only:仅作用于主节点的取样器

3、Sub-samples only:仅作用于子节点的取样器

4、JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称),从指定变量值中提取需要的值。


Field to check:要检查的响应报文的范围

1、主体:响应报文的主体,最常用

2、Body(unescaped):主体,是替换了所有的html转义符的响应主体内容,注意html转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用

3、Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能

4、Response Headers:响应信息头(如果你使用的是中文版的Jmeter,会看到这一项是信息头,这是中文翻译问题,应以英文为准)

5、Request Headers:请求信息头,提取session时可以用到

6、URL:请求url

7、Response Code:响应状态码,比如200、404等

8、Response Message:响应信息



引用名称(Reference Name):

Jmeter变量的名称,存储提取的结果;即下个请求需要引用的值、字段、变量名,后文中引用方法是${引用名称}


正则表达式(Regular Expression):

使用正则表达式解析响应结果,()括号表示提取字符串中的部分值,前后是提取的边界内容。

   (.+?)和(.*?)的区别:
    (.+?)匹配一个及以上,
    (.*?)匹配0个及以上,要取的值是空值的时候可以取到,
    例如:"page":"";,取page的值时如果其为空,使用(.+?)是取不到的,需要写"page":"(.*?)"

模板(Template):

正则表达式的提取模式。

如果正则表达式有多个提取结果(一个正则可以同时获取多个数值),则结果是数组形式,模板$1$,$2$等等,表示把解析到的第几个值赋给变量;从1开始匹配,以此类推,$0$标识全文匹配。

若只有一个结果,则只能是$1$;


匹配数字(Match No):

匹配时往往出现匹配结果为多个值的情况,正则表达式匹配数据的结果可以看做一个数组,表示如何取值:0代表随机取值,正数n则表示取第n个值(比如1代表取第一个值),负数则表示提取所有符合条件的值,可以与 For Each Controller 一起用来遍历。

缺省值:

匹配失败时候的默认填写值。

提取token:

请求白名单列表接口:

入参需要token和userID,参数化处理,引用名称为正则表达式设置的引用名称

查看结果树:

 

PS:获取多个数据

举例:在用户列表的结果中,需要将"projectId": "10005","title": "活动详情",,id、tittle都取出用来进行后续操作

表达式和模板填写内容如下所示

random参数

        {
            "status": "firing",
            "labels": {
                "alert_event": "健康度0329_2",
                "alert_target": "gdas",
                "alertname": "gdas 光驱不健康_2_${__Random(100000,999999,)}",
                "origin_prometheus": "云湖-哈尔滨",
                "severity": "critical"
            }

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值