详解 JSON 提取器

为什么要用 JSON 提取器
JSON 是目前大多数接口响应内容的数据格式
在接口测试中,不同接口之间可能会有 数据依赖 ,在 Jmeter 中可以通过后置处理器来提取接口的响应内容
JSON 提取器是其中一个可以用来提取响应内容的元件
JSON 提取器的应用场景
提取某个特定的值
提取多个值
按条件取值
提取值组成的列表
JSON 提取器
在这里插入图片描述
我们通过实际栗子去讲述理论知识点

JSON 提取器界面介绍
在这里插入图片描述
字段含义
在这里插入图片描述
测试计划树结构
下面多个栗子都以这个测试计划为基础哦
在这里插入图片描述
提取某个特定的值的栗子
登录接口响应
登录是执行其他接口的前置接口,所以要获取用户登录后的 token、uuid
在这里插入图片描述
提取 token
相对路径的方式
在这里插入图片描述
提取 uuid
绝对路径的方式
在这里插入图片描述
其他接口调用 token、uuid
在这里插入图片描述
知识点

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

综合栗子
上面讲的是 使用 JSON 提取器时的一个流程
在实际项目中,接口的响应内容肯定是非常复杂的,而我们需要提取的值也是多样化的,需要通过各种实战栗子来讲述清晰
Json 字符串
这也是某个接口返回的响应内容,后面的栗子也是以这个 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
            }
        ]
    }
}

提取单个值
在这里插入图片描述
重点
1、如果匹配到多个值,也只能提取到一个值
2、如果想提取匹配到的所有 uuid,可以设置为 -1,结果如下图
在这里插入图片描述
还会告诉你匹配了多少个值 {uuid} 而是 {uuid_2}
利用切片提取单个值
和 Python 切片一样的原理
在这里插入图片描述
提取多个值
1、四种写法类似,选一种方法自己熟记即可
2、重点: 提取多个值,提取器的 Match No. 必须填 -1

$.data.users[].role
提取所有 role 字段值
在这里插入图片描述
[
] 表示取数组的所有元素

$…users…role_desc
提取所有 role_desc 字段值

在这里插入图片描述
$…reg_time
提取所有 reg_time 字段值
在这里插入图片描述
$…[*].username
提取所有 username 字段值

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

语法格式

[?(expression)]

栗子:
在这里插入图片描述
@
代表当前节点,像上面的四个栗子,@代表 users 这个列表字段

=~
后面跟正则表达式,如果想提取 包含指定字符 的值,可以使用此正则: /.指定字符串.?/i
i 代表大小写不敏感
勾选 Compute concatenation var 的栗子
JSON 提取器
在这里插入图片描述
测试结果

uuid_1=6D5EDCB459F0917A98106E07D5438C58
uuid_2=0164DC0680F84DCE40D3DD4A36640ECA
uuid_3=079BF6BB82AFCFC7084F96AECAF0519F
uuid_ALL=6D5EDCB459F0917A98106E07D5438C58,0164DC0680F84DCE40D3DD4A36640ECA,079BF6BB82AFCFC7084F96AECAF0519F
uuid_matchNr=3

加入我们测试交流!!~群。。642830685,领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JMeter 是一种开源的性能测试工具,用于模拟用户并发访问并评估系统性能、负载和压力。JMeter 提供了多种内置组件以及插件支持,帮助开发者进行自动化测试工作。其中,“JSON Extractor”是一个用于从 JSON 格式响应中提取数据的组件。 ### JSON Extractor 插件的主要功能: #### 为什么需要 JSON Extractor? 当你运行 JMeter 脚本并对 API 进行负载测试时,可能会得到包含 JSON 结构的数据响应。在这种情况下,为了进一步分析、验证或后续操作(如发送到另一个服务),你需要提取特定字段或属性值。JSON Extractor 就是为了这个目的而设计的,它能够轻松地从 JSON 应答中提取所需信息。 #### 使用步骤: 1. **添加插件**:确保你的 JMeter 安装包含了“JSON Extractor”插件。如果没有,默认情况下 JMeter 可能不会自带该插件,需要通过管理添加额外的库文件或从外部资源安装。 2. **配置提取规则**:在 JMeter 的脚本中,插入 JSON Extractor 组件,并指定目标 JSON 对象及所需提取的键名。通常,这会涉及到指定 JSON 字符串的位置(例如,使用 `response` 或 `result` 等作为引用点)、需要提取的关键字及其索引。 3. **测试和验证**:运行测试计划以执行实际的请求并观察是否成功提取了预期的数据。如果需要调整提取规则,可以回到 JSON Extractor 配置窗口进行修改。 #### 示例: 假设你有如下 JSON 响应: ```json { "data": { "name": "John Doe", "age": 30, "is_student": false }, "status": "success" } ``` 如果你想要提取 `name` 和 `age` 的值,那么在 JMeter 中设置 JSON Extractor 的规则可能是这样的: - 目标 JSON 对象路径:`$.data` - 关注的键名:`name`, `age` ### JSON Extractor 的优势: - **简化数据分析**:允许直接在测试结果分析阶段访问关键数据点,无需手动处理大量数据。 - **增强自动化能力**:使得自动化测试过程更高效,减少人为错误和提高测试覆盖率。 - **兼容性和灵活性**:适用于各种基于 RESTful 的 API 测试,支持复杂的 JSON 结构解析。 ### 总结 JSON Extractor 是 JMeter 工具箱中的强大组件之一,它极大地增强了自动化测试的能力,特别是针对那些返回 JSON 数据格式的现代 web 服务。通过对 JSON 响应的有效抽取和处理,测试人员能够更容易地验证应用的行为、集成度量等指标,进而提升整个软件开发流程的质量控制效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值