• Jmeter基础入门教程【11】--常用功能详解:正则提取器


    前言
    作者简介:短尾巴小鳄鱼 ,一位不放弃自己的上进卷妹
    💬 如果文章知识点有错误的地方,请留言指正~和大家一起学习,一起进步
    💬 人生格言:昨日种种,皆成今我。今日种种,方成新我。切莫踌躇,莫停留,莫沉溺💬
    如果感觉博主的文章还不错的话,还请关注、点赞、收藏三连支持一下博主哦

    一、正则表达式提取器

    1. 作用

    JSON提取器只能提取响应内容,而正则表达式提取器可以提取响应头、请求头的值,当然也可以提取响应内容。
    在这里插入图片描述

    2. 参数详解

    在这里插入图片描述

    • Apply to:应用范围,选默认的main sample only就行了
    • 要检查的响应字段:要提取的字段范围
      1. 主体:响应体,不包含响应头;最常用
      2. body(unescaped):响应体,替换了所有HTML转义符;不建议使用
      3. body as a Document:从不同类型的文件中提取文本;影响性能
      4. 信息头:响应头
      5. Requeste Headers:请求头
      6. URL:URL
      7. 响应代码:响应码(Response code)
      8. 响应信息:响应信息(Response message)
    • 引用名称:接收提取值的变量名,*必传
    • 正则表达式:正则表达式
    • 模板:从找到的匹配项中创建字符串的模板
      1. 如果一条正则表达式有多个提取结果,则提取结果是数组形式
      2. 模板 1 1 1 2 2 2…表示把解析到的第几个值赋值给变量,从1开始匹配
      3. 0 0 0表示整个表达式匹配的内容
      4. 若只有一个结果,只能是 1 1 1
    • 匹配数字(0代表随机):取第几个值(0:随机,默认;-1所有;1第一个值),非必传
    • 缺省值:缺省值,匹配不到值的时候取该值,非必传
    • Use empty default value:勾选后,提取不到值时,则返回空字符串

    参数不好理解,下面来举例子啦~

    3. 正则表达式提取器实栗

    还是以这个地址的接口来测试哦

    http://api.yesapi.cn/docs.php?keyword=%E4%BC%9A%E5%91%98&channel=api

    入门实栗:

    创建测试计划:
    在这里插入图片描述
    会员登录接口的响应内容:

    {"ret":200,"data":{"err_code":0,"err_msg":"","uuid":"F118DD335346CE9D7094C97190587108","token":"C1CA708E57F0C33E548745B0D82ADA2A800D886D17BA44261459C39C52376C0D","role":"user"},"msg":"V3.3.0 YesApi App.User.Login 2022-03-20 10:25:40 hd215"}
    
    • 1

    正则表达式提取器-提取token:
    在这里插入图片描述
    正则表达式提取器-提取uuid:
    在这里插入图片描述

    1. 正则表达式-----( )里面写匹配规则,用于解析正则表达式
    2. 正则表达式-----.*?表示匹配任意长度的任意字符,这也是最常用的正则表达式
    3. 一般(.+?)和(.*?)能够满足我们80%的使用场景

    其他接口调用正则表达式提取的变量:
    在这里插入图片描述

    进阶实栗:

    测试接口:http://api.yesapi.cn/docs-api-App.User.GetList.html

    响应内容:

    {
        "ret":200,
        "data":
        {
            "err_code":0,
            "err_msg":"",
            "users":
            [
                {
                    "uuid":"F118DD335346CE9D7094C97190587108",
                    "username":"xey032001",
                    "role":"user",
                    "role_desc":"普通会员",
                    "status":0,
                    "status_desc":"正常",
                    "reg_time":"2022-03-20 10:25:40",
                    "ext_info":
                    {
                        "yesapi_avatar":"",
                        "yesapi_nickname":"",
                        "yesapi_email":"",
                        "yesapi_sex":"",
                        "yesapi_real_name":"",
                        "yesapi_points":0,
                        "yesapi_reg_source":"",
                        "yesapi_reg_note":"",
                        "yesapi_mobile":"",
                        "yesapi_expiration_time":""
                    }
                },
                {
                    "uuid":"AAC71046CFA51B8A55D4367652791D66",
                    "username":"xey04",
                    "role":"user",
                    "role_desc":"普通会员",
                    "status":0,
                    "status_desc":"正常",
                    "reg_time":"2022-03-19 13:22:24",
                    "ext_info":
                    {
                        "yesapi_avatar":"",
                        "yesapi_nickname":"",
                        "yesapi_email":"",
                        "yesapi_sex":"",
                        "yesapi_real_name":"",
                        "yesapi_points":0,
                        "yesapi_reg_source":"",
                        "yesapi_reg_note":"",
                        "yesapi_mobile":"",
                        "yesapi_expiration_time":""
                    }
                },
                {
                    "uuid":"97F22D1CD99D17C2CF29510C728F6570",
                    "username":"xey03",
                    "role":"user",
                    "role_desc":"普通会员",
                    "status":0,
                    "status_desc":"正常",
                    "reg_time":"2022-03-19 13:18:56",
                    "ext_info":
                    {
                        "yesapi_avatar":"",
                        "yesapi_nickname":"",
                        "yesapi_email":"",
                        "yesapi_sex":"",
                        "yesapi_real_name":"",
                        "yesapi_points":0,
                        "yesapi_reg_source":"",
                        "yesapi_reg_note":"",
                        "yesapi_mobile":"",
                        "yesapi_expiration_time":""
                    }
                },
                {
                    "uuid":"770A6910AF264AEB73F6ECAFEB5BBFB6",
                    "username":"xey02",
                    "role":"user",
                    "role_desc":"普通会员",
                    "status":0,
                    "status_desc":"正常",
                    "reg_time":"2022-03-19 13:15:35",
                    "ext_info":
                    {
                        "yesapi_avatar":"",
                        "yesapi_nickname":"",
                        "yesapi_email":"",
                        "yesapi_sex":"",
                        "yesapi_real_name":"",
                        "yesapi_points":0,
                        "yesapi_reg_source":"",
                        "yesapi_reg_note":"",
                        "yesapi_mobile":"",
                        "yesapi_expiration_time":""
                    }
                },
                {
                    "uuid":"690815A62298F01009010BA062773A9F",
                    "username":"xey01",
                    "role":"user",
                    "role_desc":"普通会员",
                    "status":0,
                    "status_desc":"正常",
                    "reg_time":"2022-03-19 13:14:03",
                    "ext_info":
                    {
                        "yesapi_avatar":"",
                        "yesapi_nickname":"",
                        "yesapi_email":"",
                        "yesapi_sex":"",
                        "yesapi_real_name":"",
                        "yesapi_points":0,
                        "yesapi_reg_source":"",
                        "yesapi_reg_note":"",
                        "yesapi_mobile":"",
                        "yesapi_expiration_time":""
                    }
                },
                {
                    "uuid":"24249E71ABBD72D7C1DE8B3E95A0FBBE",
                    "username":"xey",
                    "role":"user",
                    "role_desc":"普通会员",
                    "status":0,
                    "status_desc":"正常",
                    "reg_time":"2022-03-19 13:08:25",
                    "ext_info":
                    {
                        "yesapi_avatar":"",
                        "yesapi_nickname":"",
                        "yesapi_email":"",
                        "yesapi_sex":"",
                        "yesapi_real_name":"",
                        "yesapi_points":0,
                        "yesapi_reg_source":"",
                        "yesapi_reg_note":"",
                        "yesapi_mobile":"",
                        "yesapi_expiration_time":""
                    }
                }
            ],
            "total":6
        },
        "msg":"V3.3.0 YesApi App.User.GetList 2022-03-20 11:16:58 hd215"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145

    提取一个值:

    正则表达式中只提取一个值,且匹配数字不是-1

    1. 未填写模板
      在这里插入图片描述
      PS:匹配数字填1,表示如果有多个uuid,则匹配到第一个,这里与JSON提取器相同

      测试结果:

      uuid=
      uuid_g=1
      uuid_g0="uuid":"F118DD335346CE9D7094C97190587108"
      uuid_g1=F118DD335346CE9D7094C97190587108
      
      • 1
      • 2
      • 3
      • 4

      可以看到,如果正则匹配到值,但是没有填写模板,则返回空

    2. 模板写$0$
      在这里插入图片描述
      测试结果:

      uuid="uuid":"F118DD335346CE9D7094C97190587108"
      uuid_g=1
      uuid_g0="uuid":"F118DD335346CE9D7094C97190587108"
      uuid_g1=F118DD335346CE9D7094C97190587108
      
      • 1
      • 2
      • 3
      • 4

      可以看到,如果模板填写的$0$,uuid取的是uuid_g0

    3. 模板写$1$

      测试结果:

      uuid=F118DD335346CE9D7094C97190587108
      uuid_g=1
      uuid_g0="uuid":"F118DD335346CE9D7094C97190587108"
      uuid_g1=F118DD335346CE9D7094C97190587108
      
      • 1
      • 2
      • 3
      • 4

      可以看到,如果模板写$1$,uuid取的是uuid_g1

    4. 模板写$2$(不存在)

      测试结果:

      uuid=null
      uuid_g=1
      uuid_g0="uuid":"F118DD335346CE9D7094C97190587108"
      uuid_g1=F118DD335346CE9D7094C97190587108
      
      • 1
      • 2
      • 3
      • 4

      可以看到,如果模板不存在,uuid为null(即使勾选了使用空默认值,也返回null)

    提取多个值:
    在这里插入图片描述
    测试结果:

    uuid_1=F118DD335346CE9D7094C97190587108
    uuid_1_g=1
    uuid_1_g0="uuid":"F118DD335346CE9D7094C97190587108"
    uuid_1_g1=F118DD335346CE9D7094C97190587108
    uuid_2=AAC71046CFA51B8A55D4367652791D66
    uuid_2_g=1
    uuid_2_g0="uuid":"AAC71046CFA51B8A55D4367652791D66"
    uuid_2_g1=AAC71046CFA51B8A55D4367652791D66
    uuid_3=97F22D1CD99D17C2CF29510C728F6570
    uuid_3_g=1
    uuid_3_g0="uuid":"97F22D1CD99D17C2CF29510C728F6570"
    uuid_3_g1=97F22D1CD99D17C2CF29510C728F6570
    uuid_4=770A6910AF264AEB73F6ECAFEB5BBFB6
    uuid_4_g=1
    uuid_4_g0="uuid":"770A6910AF264AEB73F6ECAFEB5BBFB6"
    uuid_4_g1=770A6910AF264AEB73F6ECAFEB5BBFB6
    uuid_5=690815A62298F01009010BA062773A9F
    uuid_5_g=1
    uuid_5_g0="uuid":"690815A62298F01009010BA062773A9F"
    uuid_5_g1=690815A62298F01009010BA062773A9F
    uuid_6=24249E71ABBD72D7C1DE8B3E95A0FBBE
    uuid_6_g=1
    uuid_6_g0="uuid":"24249E71ABBD72D7C1DE8B3E95A0FBBE"
    uuid_6_g1=24249E71ABBD72D7C1DE8B3E95A0FBBE
    uuid_matchNr=6
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    一个正则表达式有多个( ):

    1. 模板为空:
      在这里插入图片描述
      测试结果:

      uuid=
      uuid_g=2
      uuid_g0="uuid":"F118DD335346CE9D7094C97190587108","username":"xey032001"
      
      uuid_g1=F118DD335346CE9D7094C97190587108
      uuid_g2=xey032001
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      可以看到,如果模板为空,取不到值,uuid为空

    2. 只有一个模板:
      在这里插入图片描述
      测试结果:

      uuid=F118DD335346CE9D7094C97190587108
      uuid_g=2
      uuid_g0="uuid":"F118DD335346CE9D7094C97190587108",
      "username":"xey032001"
      
      uuid_g1=F118DD335346CE9D7094C97190587108
      uuid_g2=xey032001
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      可以看到,如果只有一个模板,取到了uuid_g1

    3. 有两个模板:
      在这里插入图片描述
      测试结果:

      uuid=F118DD335346CE9D7094C971q90587108,
      xey032001
      uuid_g=2
      uuid_g0="uuid":"F118DD335346CE9D7094C97190587108",
      "username":"xey032001"
      
      uuid_g1=F118DD335346CE9D7094C97190587108
      uuid_g2=xey032001
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

      可以看到,uuid取到了两个值uuid_g1和uuid_g2,并且用逗号拼接

      注意:

      • 引用名称、匹配数字、缺省值只需要填一个即可,不需要跟正则表达式的数量一致

      • 也可以用. - 拼接,只要模板也用. 或- 拼接即可,如模板填: 1 1 1- 2 2 2q

  • 相关阅读:
    序列查询新解
    大数据:Flume安装部署和配置
    【深度学习】图像去噪(2)——常见网络学习
    vue3加axios配合element-plus实现图片等文件本地上传,并获取服务器返回的真实地址数据,前端写法
    MeterSphere 至学篇
    ES6中的箭头函数详细梳理
    手写map,filter函数
    oracle数据库的缓存设置
    C++初级----list(STL)
    A*路径规划探究
  • 原文地址:https://blog.csdn.net/weixin_44629511/article/details/125890056