首页 > 编程语言 >推荐一款Python接口自动化测试数据提取分析神器!

推荐一款Python接口自动化测试数据提取分析神器!

时间:2024-07-11 09:08:55浏览次数:15  
标签:search name Python age 测试数据 神器 JSON JMESPath 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都能发挥重要作用。

通过上述内容的学习,希望能够帮助大家更好地理解和使用Jmespath库,从而更高效地处理JSON数据。

标签:search,name,Python,age,测试数据,神器,JSON,JMESPath,jmespath
From: https://www.cnblogs.com/jinjiangongzuoshi/p/18295350

相关文章

  • 基于Python实现校园影院平台系统[源码+LW+部署讲解视频]
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业......
  • python urllib 基础 get ajax
    get请求豆瓣电影下载importurllib.parseimporturllib.requestimportjson#url='https://movie.douban.com/j/chart/top_list?type=19&interval_id=100%3A90&action=&start='+page+'&limit=20'headers={"User-Agent"......
  • Ollama完整教程:本地LLM管理、WebUI对话、Python/Java客户端API应用
    老牛同学在前面有关大模型应用的文章中,多次使用了Ollama来管理和部署本地大模型(包括:Qwen2、Llama3、Phi3、Gemma2等),但对Ollama这个非常方便管理本地大模型的软件的介绍却很少。目前,清华和智谱AI联合发布开源的GLM4-9B大模型也能支持Ollama进行本地部署了(本地部署GLM-4-9B清华......
  • Python爬虫(1-4)-基本概念、六个读取方法、下载(源代码、图片、视频 )、user-agent反爬
    Python爬虫一、爬虫相关概念介绍1.什么是互联网爬虫如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的数据解释1:通过一个程序,根据URL进行爬取网页,获取有用信息解释2:使用程序模拟浏览器,去向服......
  • Python学习笔记(一)(更新中)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档Python基础语法(一)一、变量1、变量命名的规则2、变量的常见类型二、注释提示:以下是本篇文章正文内容,下面案例可供参考一、变量变量是指存储信息的容器。变量的赋值包括变量名、等号、存储的信息这......
  • python原型链污染
    python原型链污染原型链污染python中,对象的属性和方法可以通过原型链来继承和获取每一个对象都有一个原型,定义了其可以访问的属性和方法,所以可以通过修改原型链中的属性来利用漏洞攻击当对象访问属性或方法时,会先对自身进行查找,找不到就一次往上级查找只能污染类的属性,不能......
  • 一文掌握ReLU激活函数:深度学习中不可或缺的神器
    在深度学习的领域中,激活函数扮演着至关重要的角色,它们决定着一个神经网络节点是否应该被激活,帮助模型理解数据中复杂和非线性的关系。今天,我们将深入探讨最受欢迎的激活函数之一——ReLU(RectifiedLinearUnit)函数,揭示其为何成为许多深度学习模型的首选。1.ReLU激活函数......
  • 加速你的下载,IDM神器不可错过!快如闪电,稳如老狗
    嗨,各位小伙伴!......
  • 互联网下载管家Internet Download Manager提速下载,IDM神器助你秒下大文件!
    嘿!亲爱的下载达人们,你们还在为慢吞吞的下载速度而苦恼吗?......
  • Python潮流周刊的优惠券和精美电子书(EPUB、PDF、Markdown)
    Python潮流周刊从2023.05.13连载至今,本周即将发布第60期,这意味着我们又要达成一个小小的里程碑啦!每周坚持做分享,周复一周,这对自己的精力和意志是一项不小的挑战。于是,为了让自己获得一些仪式感,我给自己定了一个较为合理的时间目标,就是每30期周刊作为一季。划分出“每一季......