接口测试之Jmeter-(四)从JSON响应中提取数据

前言:

        在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响应数据的结构,根据不同的结构写正则表达式,大家可以按照同类型结构进行参考,有问题评论区留言,比心~

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值