当前位置: 首页 > news >正文

Python接口自动化测试数据提取分析:Jmespath

1、引言

在处理JSON数据时,我们常常需要提取、筛选或者变换数据。手动编写这些操作的代码不仅繁琐,而且容易出错。Python作为一个功能强大的编程语言,拥有丰富的库和工具来处理这些数据。今天,将介绍一个实用的Python库——JMESPath,它为提取JSON数据提供了简洁而强大的语法。

2、JMESPath介绍

Jmespath(JSON Messaging Path)是一种用于查询和转换JSON数据的查询语言,专为JSON数据设计。它允许开发者使用简洁的表达式来提取、筛选和转换JSON数据中的元素,使得开发者能够轻松地提取JSON数据中的元素,并执行各种转换操作。与XPath类似,JMESPath的语法直观易懂,学习成本较低。

3、JMESPath安装

在使用Python Jmespath之前,需要先通过pip安装该库:

pip install jmespath

4、JMESPath用途

JMESPath在Python中的用途广泛,尤其适用于以下场景:

  • 接口自动化测试:在测试API接口时,经常需要从响应的JSON数据中提取待验证的字段值。使用JMESPath,可以轻松编写查询表达式,快速定位并提取所需数据。

  • 数据处理与分析:在处理和分析大量JSON数据时,JMESPath可以帮助开发者快速筛选和转换数据,提高数据处理效率。

  • 日志分析与监控:在日志管理和监控系统中,JSON格式的日志数据非常常见。使用JMESPath,可以轻松从日志数据中提取关键信息,实现实时监控和告警。

5、JMESPath的特性

JMESPath具有以下特性:

  • 声明式语法:JMESPath使用声明式语法,使得表达式易于阅读和编写,通过点(.)和方括号([])操作符即可轻松访问JSON对象中的属性和数组元素。

  • 强大的功能:支持多种运算符、函数和语法结构,可以处理各种复杂的数据结构。

  • 跨语言跨平台支持:JMESPath不仅支持Python,还有其他编程语言的实现,如JavaScript、Java等。

  • 可扩展性:可以自定义函数,以满足特定的数据处理需求。

6、使用示例

假设有以下JSON数据:

{  "name": "张三",  "age": 26,  "grade": {  "Chinese": 96,  "Math": 99  },  "records": [  {"Chinese": 95, "Math": 100},  {"Chinese": 98, "Math": 98}  ]  
}

使用Jmespath提取name和records中的第一个元素:

import jmespath  data = {  "name": "张三",  "age": 26,  "grade": {  "Chinese": 96,  "Math": 99  },  "records": [  {"Chinese": 95, "Math": 100},  {"Chinese": 98, "Math": 98}  ]  
}  search_name = 'name'  
res_name = jmespath.search(search_name, data)  
print(res_name)  # 输出: 张三  search_records = 'records[0]'  
res_records = jmespath.search(search_records, data)  
print(res_records)  # 输出: {'Chinese': 95, 'Math': 100}

使用切片和通配符提取所有学生的名字:

import jmespath  data = {  "students": [  {"name": "Alice", "age": 20},  {"name": "Bob", "age": 22},  {"name": "Charlie", "age": 21}  ]  
}  search_names = 'students[*].name'  
res_names = jmespath.search(search_names, data)  
print(res_names)  # 输出: ['Alice', 'Bob', 'Charlie']

使用管道符将多个查询操作串联起来,如先筛选出年龄大于21的学生,然后提取他们的名字:

import jmespath  data = {  "students": [  {"name": "Alice", "age": 20},  {"name": "Bob", "age": 22},  {"name": "Charlie", "age": 21}  ]  
}  search_expr = 'students[?age > `21`].name'  
res_filtered_names = jmespath.search(search_expr, data)  
print(res_filtered_names)  # 输出: ['Bob']

7、结论

Python Jmespath库为处理JSON数据提供了一种简洁而强大的解决方案。其简洁的语法、强大的功能以及跨平台的支持使得它成为处理复杂JSON数据的理想选择。无论是接口自动化测试、数据处理还是数据分析,JMESPath都能发挥重要作用。

8、关于优联前端

        武汉优联前端科技有限公司由一批从事前端10余年的专业人才创办,是一家致力于H5前端技术研究的科技创新型公司,为合作伙伴提供专业高效的前端解决方案,合作伙伴遍布中国及东南亚地区,行业涵盖广告,教育, 医疗,餐饮等。有效的解决了合作伙伴的前端技术难题,节约了成本,实现合作共赢。承接Web前端,微信小程序、小游戏,2D/3D游戏,动画交互与UI广告设计等各种技术研发。

http://www.lryc.cn/news/417383.html

相关文章:

  • 特种设备作业叉车司机题库及答案
  • Linux 操作系统速通
  • IIS漏洞大全(附修复方法)
  • HarmonyOS笔记3:从网络数据接口API获取数据
  • Mac 下生成core dump
  • 详解Xilinx FPGA高速串行收发器GTX/GTP(1)--SerDes和GTX的关系
  • golang实现Digest认证鉴权接口
  • 机房托管服务器说明
  • CookieMaker工作室合作开发C++项目十一:拟态病毒
  • 57、PHP 实现 从扑克牌中随机抽取5张牌,判断是不是一个顺子
  • 前端HTML+CSS查漏补缺——仿制百度搜索首页的一些思考
  • 【Python】实现一个个人理财助手小程序
  • 【GCC】结合GPT4 延迟梯度学习2:延迟梯度的计算及阈值更新
  • 灰豚数字人MotionAI大模型完成备案,模型已超百亿参数!
  • zsh 配置 docker 自动补全
  • 鸿蒙第三方应用.hap打包、安装流程。
  • leetcode:找到字符串中所有字母异位词
  • C语言学习
  • Java面试题:MySQL高频面试题
  • 使用js给数字进位,比如23333元进位成2.33万元
  • Java二十三种设计模式-享元模式(12/23)
  • 腾讯云AI代码助手助力软件开发体验分享
  • Leetcode力扣刷题——182.查找重复的电子邮箱
  • idea中好用的插件
  • spring 代码执⾏ (CVE-2018-1273)漏洞
  • 幺麻子曲折上市路:毛利率近四年下滑不少,存货出现较大增长
  • Sol盗u、sol链上的USDT盗窃:警惕恶意智能合约
  • jupyter for c++
  • TCP Analysis Flags 之 TCP Window Full
  • 相关性检验