前言:
在jmeter中查看一个列表,一般会让我们根据一个字段去获取一个相应的ID,为之后的用例用,在匹配的时候,会用到JsonPath,写法根据列表的返回值的数据结构不同而不同,下面列举出几中常见的格式,之后还有其他的格式,可以进行补充。
目录
(一)前提:安装JMeter JsonPath插件
从JMeter 3.0开始,使用Json变量提取器从Json响应中提取数据要容易得多。换句话说,Json提取器可以原生使用。使用前需要安装插件,具体步骤如下:
安装JMeter JsonPath插件
- 下载plugns-manager.jar并将其放入
JMETER_HOME/lib/ext
目录, - 重启JMeter,
- 点击
Options > Plugins Manager
顶部菜单, - 选择
Available Plugins
标签, - 选择
Json Plugins
并单击Apply Changes并重新启动JMeter。
重新启动后,在JMeter的Json的插件应该在右键菜单Add > Post Processors > Json Path Extractor。
(二)示例
下面会用到这些操作符,可以参考下面截图:
参考网址:JsonPath的使用_LZJWXJ树袋熊-CSDN博客
1. 根据name获取moid
"result":
[{
"network": 7,
"moid": "datacenter-57",
"datastore": 2,
"name": "DC1"
}]
}
JSONPath Expression: $.result[?(@.name =='${NAME}')][0].moid
2. 根据host_name获取host_moid
"result":
[ {
"cluster_name": "test FT",
"cluster_type": true,
"cluster_moid": "domain-c1960",
"child":
[ {
"host_moid": "host-2179",
"host_name": "10.10.132.111"
} ]
}]
JSONPath Expression: $.result[0].child[?(@.host_name=='${HOST_NAME}')][0].host_moid
3. 直接获取cpu和memory_KB
"result":
{
"data_store":
[ {
"moid": "datastore-2181",
"name": "datastore1",
"ssd": "false",
"type": "VMFS",
"thin_support": true
}],
"cpu":32,
"memory_KB": 67108276
}
JSONPath Expression: 获取cpu: $.result.cpu
获取memory_KB: $.result.memory_KB
4. 根据name获取moid
"result":
{
"data_store":
[ {
"moid": "datastore-2181",
"name": "datastore1",
"type": "VMFS",
"thin_support": true
}],
"cpu":32,
"memory_KB": 67108276
}
JSONPath Expression: $.result.data_store[?(@.name=='${DATASTORE_NAME}')][0].moid
5. 根据获取 state
"result":
{
"childSnapshotList":
[
{
"currentSnapshot": false,
"quiesced": false,
"state": "suspended",
"childSnapshotList":
[
{
"currentSnapshot": true,
"quiesced": false,
"state": "poweredOff",
"childSnapshotList":
[
],
"name"
"SNAPSHOT1_2",
"id": 56
}
],
"name"
"SNAPSHOT_2",
"id": 55
}
]
}
JSONPath Expression: $.result.childSnapshotList[0].childSnapshotList[?(@.name =='${SNAPSHOT1}')][0].state
Hello Test,以上举例都是我使用Jmeter测试接口过程中,常见的一些API响应数据的结构,根据不同的结构写正则表达式,大家可以按照同类型结构进行参考,有问题评论区留言,比心~