推荐一款Python接口自动化测试数据提取分析神器!
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都能发挥重要作用。
通过上述内容的学习,希望能够帮助大家更好地理解和使用Jmespath库,从而更高效地处理JSON数据。
推荐一款Python接口自动化测试数据提取分析神器!的更多相关文章
- python接口自动化12-案例分析(csrfToken)【转载】
前言: 有些网站的登录方式跟前面讲的博客园和token登录会不一样,把csrfToken放到cookie里,登录前后cookie是没有任何变化的,这种情况下如何绕过前端的验证码登录呢? 一.登录前后对 ...
- python接口自动化-参数化
原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...
- python接口自动化 -参数关联(一)
原文地址https://www.cnblogs.com/yoyoketang/p/6886610.html 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址ht ...
- python接口自动化5-Json数据处理
前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的 ...
- python接口自动化23-token参数关联登录(登录拉勾网)
前言 登录网站的时候,经常会遇到传token参数,token关联并不难,难的是找出服务器第一次返回token的值所在的位置,取出来后就可以动态关联了 登录拉勾网 1.先找到登录首页https://pa ...
- python接口自动化10-token登录
前言 有些登录不是用cookie来验证的,是用token参数来判断是否登录. token传参有两种一种是放在请求头里,本质上是跟cookie是一样的,只是换个单词而已:另外一种是在url请求参数里,这 ...
- python接口自动化8-参数化
前言 前面一篇实现了参数的关联,那种只是记流水账的完成功能,不便于维护,也没什么可读性,接下来这篇可以把每一个动作写成一个函数,这样更方便了. 参数化的思维只需记住一点:不要写死 (由于博客园登录机制 ...
- python接口自动化7-参数关联
前言 我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了 (博客园的登录机制已经变了,不能用账号和密码登录了 ...
- python接口自动化11-post传data参数案例
前言: 前面登录博客园的是传json参数,有些登录不是传json的,如jenkins的登录,本篇以jenkins登录为案例,传data参数. 一.登录jenkins抓包 1.登录jenkins,输入账 ...
- Python接口自动化——soap协议传参的类型是ns0类型的要创建工厂方法纪要
1:在Python接口自动化中,对于soap协议的xml的请求我们可以使用Suds Client来实现,其soap协议传参的类型基本上是有2种: 第一种是传参,不需要再创建啥, 第二种就是ns0类型的 ...
随机推荐
- 推荐几款火爆的Python在线编辑器
在当今数字化时代,编程已成为一项不可或缺的技能.Python作为一种简单易学且功能强大的编程语言,受到了广大编程爱好者和专业开发人员的青睐.为了方便大家随时随地编写和运行Python代码,市面上涌现了 ...
- AIRIOT物联网低代码平台如何配置Modbus RTU协议?
MBRTU即MODBUS RTU的简称,MODBUS是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信.平台的MBRTU协议是建立在TCP协议之上的 ...
- 工业福利!用.NET快速开发物联网扫码器设备的通用扫码功能
不管你是用.net framework还是用.net core或者更高版本.net环境,这篇文章也许都能帮到你!因为接下来我会提供一个简单粗暴的方式,来快速实现多款扫码器的通用扫码功能.目前本地测试过 ...
- Python:解决Matplotlib保存图片显示不全问题
保存图片的时候设置参数bbox_inches = 'tight',如: plt.savefig("Matplotlib/graph.png", bbox_inches = 'tig ...
- JS监听DOM创建和销毁
源码 web开发指南 <!DOCTYPE html> <html lang="zh"> <head> <meta charset=&quo ...
- 通过计算巢轻松部署 Walrus
概述 Walrus 是一个用于管理和部署应用程序的平台,它提供了一个集中化的管理界面,使用户能够轻松地管理应用的生命周期,包括创建.配置.部署.监控和维护应用.Walrus 还提供了一些高级功能,如应 ...
- nginx日志缓存open_log_file_cache
nginx日志缓存,提升磁盘性能 将多个日志进行积累,达到一定量级后写入到磁盘,可以减少磁盘旋转,从而降低磁盘i/o,提升nginx能效 语法: access_log path access_log ...
- Python爬虫 | 批量爬取今日头条街拍美图
01 前言 上篇文章我们爬取了今日头条街拍美图,心情相当愉悦,今天这篇文章我们使用Selenium来爬取当当网的畅销图书排行.正所谓书中自有黄金屋,书中自有颜如玉,我们通过读书学习来提高自身的才华,自 ...
- Cygwin安装及简单说明
1 简介 官方说明:Cygwin is a Linux-like environment for Windows. It consists of a DLL (cygwin1.dll), which ...
- 极限科技(INFINI labs)荣获中国信通院大数据“星河”标杆案例
12 月 6 日,由中国信息通信研究院和中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)共同组织的 2023 大数据"星河(Galaxy)"案例评选结果正式公示. ...