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"}

     

  • 相关阅读:
    _allow_resetlogs_corruption打开数据库
    增量备份恢复DATAGUARD(出现gap并后续有新增数据文件,主从数据文件路径一致)
    dataguard环境破坏后采用rman备份集重新部署
    表空间数据文件迁移到另外的位置(backup as copy tablespace)
    pl/sql无法登录12c问题
    ORA-00845: MEMORY_TARGET not supported on this system
    dataguard主库添加的数据文件路径在从库不存在
    12c expdp
    表进行加密(redact)实验
    创建触发器启动pdb
  • 原文地址:https://www.cnblogs.com/pythonwork/p/15170607.html
Copyright © 2011-2022 走看看