简介
本文详细介绍如何进行 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数据,并成功参数化。