zoukankan      html  css  js  c++  java
  • jmeter_06_用户参数_JSON 提取器

    • ---------------25---------------
    • 线程组下的用户参数 优先级高于 测试计划里的用户自定义变量
    • HTTP 请求下的用户参数 优先级高于 线程组下的用户参数
    • 若有重名参数,优先取优先级高的用户参数
    • 用户参数用户自定义变量重名,则优先取用户参数的值;因为配置元件执行完再到前置处理器,所以前置处理器的值会覆盖配置元件的值
    • 10个请求的响应内容都是不同;因为每次发送一次 HTTP 请求,都会调用一次用户参数,所以它的值是动态生成
    • 拓展:如果想要全局生效的且只生成一次的用户自定义变量,可使用配置元件-用户自定义变量,可参考

    ----------------------------26_JSON 提取器

    为什么要用 JSON 提取器

    • JSON 是目前大多数接口响应内容的数据格式
    • 在接口测试中,不同接口之间可能会有数据依赖,在 Jmeter 中可以通过后置处理器来提取接口的响应内容
    • JSON 提取器是其中一个可以用来提取响应内容的元件

    JSON 提取器的应用场景

    1. 提取某个特定的值
    2. 提取多个值
    3. 按条件取值
    4. 提取值组成的列表

    --------------

     

     

     ------------------简单提取json 一个字段----使用 JSON 提取器时的一个流程

    知识点

    • 提取某个特定值的方式有两种:绝对路径、相对路径
    • 提其他接口可以通过 ${var} 这种格式,来获取提取到的值

     ------------------------复杂json字符串

    {
        "ret": 200,
        "msg": "V2.5.1 YesApi App.User.GetList",
        "data": {
            "total": 3,
            "err_msg": "",
            "err_code": 0,
            "users": [
                {
                    "role": "user",
                    "status_desc": "正常",
                    "reg_time": "2020-06-22 15:19:51",
                    "role_desc": "普通会员",
                    "ext_info": {
                        "yesapi_nickname": "",
                        "yesapi_points": 0
                    },
                    "uuid": "6D5EDCB459F0917A98106E07D5438C58",
                    "username": "fangjieyaossb",
                    "status": 0
                },
                {
                    "role": "user",
                    "status_desc": "正常",
                    "reg_time": "2020-06-22 14:27:17",
                    "role_desc": "普通会员",
                    "ext_info": {
                        "yesapi_nickname": "",
                        "yesapi_points": 0
                    },
                    "uuid": "0164DC0680F84DCE40D3DD4A36640ECA",
                    "username": "fangjieyaossa",
                    "status": 0
                },
                {
                    "role": "admin",
                    "status_desc": "正常",
                    "reg_time": "2020-03-23 22:48:32",
                    "role_desc": "管理员",
                    "ext_info": {
                        "yesapi_nickname": "",
                        "yesapi_points": 0
                    },
                    "uuid": "079BF6BB82AFCFC7084F96AECAF0519F",
                    "username": "fangjieyaoss",
                    "status": 0
                }
            ]
        }
    }
    View Code

    重点

    • 如果匹配到多个值(像 $..uuid ),也只能提取到一个值       为什么回出现多个呢,因为前面的key 可以不一样哟;但实际上通常会用绝对路径来匹配
    • 如果想提取匹配到的所有 uuid,可以设置为 -1,结果如下图

    还会告诉你匹配了多少个值 ${uuid_matchNr} ,记住,调用变量时,不再是 ${uuid} 而是 ${uuid_1} 、 ${uuid_2}

    提取多个值

    • 四种写法类似,选一种方法自己熟记即可
    • 重点:提取多个值,提取器的 Match No. 必须填 -1

     ------------

    $.data.users[*].role

    提取所有 role 字段值

    [*] 表示取数组的所有元素

    $..users..role_desc

    提取所有 role_desc 字段值

    $..reg_time

    提取所有 reg_time 字段值

    $..[*].username

    提取所有 username 字段值

    按条件提取值

    有时候只需要提取某个特定条件下的参数值

    语法格式

    [?(expression)]

    栗子

    Jsonpath结果
    $..users[?(@.uuid)] 提取 users 里面包含 uuid 字段的记录
    $..users[?(@.reg_time > '2020-06-01')] 提取 reg_time 字段大于 2020-06-01 的记录
    $..users[?(@.role_desc =~ /.*会员.*?/i)] 提取 role_desc 字段包含会员的记录
    $..users[?(@.status == 0)] 提取 status 字段等于 0 的记录

    @

    代表当前节点,像上面的四个栗子,@代表 users 这个列表字段

    =~

    • 后面跟正则表达式,如果想提取包含指定字符的值,可以使用此正则: /.*指定字符串.*?/i 
    •  i  代表大小写不敏感

    提取数据指定字段的值的栗子

    提取 users 第一条记录的 uuid、username 字段的值

    $..users[0].['uuid','username']

    测试结果

    new_1={"uuid":"6D5EDCB459F0917A98106E07D5438C58","username":"luojunjiessb"}

     

  • 相关阅读:
    1062 Talent and Virtue (25 分)
    1083 List Grades (25 分)
    1149 Dangerous Goods Packaging (25 分)
    1121 Damn Single (25 分)
    1120 Friend Numbers (20 分)
    1084 Broken Keyboard (20 分)
    1092 To Buy or Not to Buy (20 分)
    数组与链表
    二叉树
    时间复杂度与空间复杂度
  • 原文地址:https://www.cnblogs.com/pythonwork/p/15170607.html
Copyright © 2011-2022 走看看