首页 前端知识 JMeter之JSON提取器(JSON Extractor)

JMeter之JSON提取器(JSON Extractor)

2024-06-10 11:06:12 前端知识 前端哥 926 280 我要收藏

简介

本文详细介绍如何进行 JMeter的上个接口返回的值作为下一个接口的参数。可以通过 JsonPath 提取所需要的值,功能非常强大(注意取样器返回必须为 Json)。

步骤

① 添加HTTP请求默认值(这步非必要,仅做记录)

测试过程中有多个sampler(取样器)请求时,其中大多数如ip,协议,端口号,编码这些都是重复的,为了以后迁移或修改方便,将相同的参数放到一块,就有了配置元件http请求默认值。请求默认值填写参数后,其它请求中相同的参数可以留空。

参数取值优先级:JMeter优先读取【HTTP请求】中的参数值(比如,在【HTTP 请求默认值】设置了“端口号”为8080,在【HTTP请求】设置了“端口号”为8888,发送请求时,优先获取请求上带的端口号参数8888;若请求上的参数为空,再去获取HTTP 请求默认值的对应参数值。)

在这里插入图片描述

②添加请求,添加JSON提取器

JsonPath介绍
JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具, 在Python、Java、Javascript等编程语言中都有相应的类库提供。jmeter的json 提取器元件就可以使用jsonpath语法来截取json文档的内容。

jsonpath语法如下:
  $:表示根目录
  .:表示下一节点
  ..:表示任意一个节点
举例如下:
$.id : 其中$代表根目录,这个表达式能取出 1712903618659638
$.data.dataList[0].title: 遇到数组,使用[下标] ,这个表达式能取出 默认分类
$..title:任意节点中有title的值,则取第一个值;这个表达式也能取出 默认分类
{
    "id": "1712903618659638",
    "state": {
        "code": 0,
        "msg": "操作成功"
    },
    "data": {
        "total": 4,
        "dataList": [
            {
                "id": 0,
                "liveId": 2000002089,
                "level": 1,
                "parentId": null,
                "title": "默认分类",
                "type": "question",
                "status": null,
                "sort": null,
                "createBy": null,
                "createTime": null,
                "updateBy": null,
                "updateTime": null
            },
            {
                "id": 25912,
                "liveId": 2000002089,
                "level": 1,
                "parentId": null,
                "title": "题库分类2",
                "type": "question",
                "status": "Y",
                "sort": null,
                "createBy": 2000002048,
                "createTime": 1712903568000,
                "updateBy": 2000002048,
                "updateTime": 1712903568000
            },
            {
                "id": 581,
                "liveId": 2000002089,
                "level": 1,
                "parentId": null,
                "title": "555",
                "type": "question",
                "status": "Y",
                "sort": null,
                "createBy": 2000002048,
                "createTime": 1558686131000,
                "updateBy": 2000002048,
                "updateTime": 1558686131000
            }
        ]
    },
    "etag": null
}
实例:通过课程信息获取到店铺ID接口的响应body
{
    "data": {
        "courseConfig": {
            "businessId": 2100000881350072,
            "censorStatus": "audit_pass",
            "displayStatus": null,
            "updateTime": null,
            "title": "名称不符合运营规范",
            "liveId": 2000002089,
            "shareType": "normal",
            "imgUrl": "https:xxx/channelNormal.png",
            "createBy": null,
            "createTime": null,
            "updateBy": null,
            "id": null,
            "describe": null,
            "businessType": "channel"
        }
    },
    "etag": null,
    "id": "1583460509602802",
    "state": {
        "msg": "操作成功",
        "code": 0
    }
}

要取liveId字段,所以 JSON Path expressions 设置成 $.data.courseShareConfigPo.liveId
在这里插入图片描述

②添加请求,设置变量参数

(1)添加http 请求,并设置为get请求,
(2)打开Body Data(消息体数据)页,设置Json格式,并参数化,使用 ${变量名},取自JSON提取器种的引用名称(Name of created variable) 。
(3)参数化时,可以直接设置,参照如下
在这里插入图片描述
通过结果树,我们发现Jmeter发送的getData已经成功读取 [通过课程信息获取到店铺ID] 接口的响应body的liveId数据,并成功参数化。
在这里插入图片描述

转载请注明出处或者链接地址:https://www.qianduange.cn//article/11755.html
标签
jmeter
评论
发布的文章

JQuery中的load()、$

2024-05-10 08:05:15

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!