当前位置: 首页 > 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广告设计等各种技术研发。

相关文章:

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

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

特种设备作业叉车司机题库及答案

1.在我们平时工作中,经常接触的汽油、柴油、机油、油棉纱、木材等均为() A、助燃物质 B、可燃物质 C、着火源 参考答案:B 2.叉车满载行驶时,如合成重心靠后() A、有利于纵向稳定 B、有利于横向稳定 C、纵向和横向均有利 参考答案:A 3.蓄电池车行驶中放…...

Linux 操作系统速通

一、安装虚拟机 1. VmWare 安装下载 vmware workstation pro 16 下载 win R 输入 ncpa.cpl 确保网卡正常 2. CentOS 系统下载 CentOS 系统下载 将 CentOS 系统安装到虚拟机 3. 查看虚拟机 IP 命令 ifconfig 4. finalShell 安装下载 finalShell 下载 输入用户名一般是 ro…...

IIS漏洞大全(附修复方法)

IIS6.0 IlS Server 在 Web 服务扩展中开启了 WebDAV,配置了可以写入的权限,造成任意文件上传。 漏洞复现 fofa:"llS-6.0" or 本地搭建2003 server 1)开启 WebDAV 和写权限: 做好准备工作后开启环境,然后我们去访问配置的IP&#…...

HarmonyOS笔记3:从网络数据接口API获取数据

面向HarmonyOS的移动应用一般采用MVVM模式(见参考文献【1】),其中: M(Model层):模型层,存储数据和相关逻辑的模型。它表示组件或其他相关业务逻辑之间传输的数据。Model是对原始数据的进一步处理…...

Mac 下生成core dump

mac下生成core dump 使用ulimit -c查看ulimit设置,显示unlimited表示开启,显示0表示关闭,通过ulimit -c unlimited打开设置; 但是这个只在当前窗口有效果。如果需要变成系统全局设置。 就需要去改/etc/profile文件,打开,然后加上ulimit -c unlimited就可…...

详解Xilinx FPGA高速串行收发器GTX/GTP(1)--SerDes和GTX的关系

目录 1、SerDes和GTX的关系 2、传输总线的变化 2.1、从串行到并行 2.2、从并行又回到串行 文章总目录点这里:《FPGA接口与协议》专栏的说明与导航 1、SerDes和GTX的关系 Hold On,这个系列文章不是讲GTX收发器的吗?怎么一开始就扯到SerDes上了?GTX和SerDes之间有…...

golang实现Digest认证鉴权接口

什么是Digest认证鉴权接口? Digest认证鉴权接口是一种基于摘要算法的身份验证方法,用于确保API请求的安全性。在实际应用中,常常使用HTTP协议的Digest认证鉴权接口来验证请求的合法性。下面是一种常见的Digest认证鉴权流程: 1. 客户端发送HTTP请求到服务器,请求接口资源…...

机房托管服务器说明

机房托管服务器是指将企业或个人的服务器放置到专业数据中心(IDC机房)进行管理和维护,由数据中心提供稳定、安全的运行环境以及网络连接等基础设施支持。rak小编为您整理发布机房托管服务器说明详细内容。 通过托管服务器到专业机房,企业能够享受到高性能…...

CookieMaker工作室合作开发C++项目十一:拟态病毒

(注:本文章使用了“无标题技术”) 一天,我和几个同事,平台出了点BUG,居然给我刷出了千年杀,同事看得瑕疵欲裂,发誓要将我挫骨扬灰—— (游戏入口:和平精英31.…...

57、PHP 实现 从扑克牌中随机抽取5张牌,判断是不是一个顺子

题目: PHP 实现 从扑克牌中随机抽取5张牌,判断是不是一个顺子 描述: 即这5张牌是不是连续的2-10位数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。 解题思路&#xf…...

前端HTML+CSS查漏补缺——仿制百度搜索首页的一些思考

在像素模仿百度搜索首页的时候,在实现的时候,遇到了一些值得记录的点。 在这个过程中,也顺便看了看百度的源码,感觉很有意思。 对了,QQ截屏里面获取到的颜色,是不大正确的,会有点误差。 这是我…...

【Python】实现一个个人理财助手小程序

以下是一个简化的 Python 代码框架,以及如何实现上述功能点的基本思路,可以基于这个框架进一步开发和完善你的小程序。 以下是一个简化的 Python 代码框架,使用了基本的类和函数来模拟上述功能: import pandas as pd from crypt…...

【GCC】结合GPT4 延迟梯度学习2:延迟梯度的计算及阈值更新

上文,充分发现了 排队梯度延迟的重要性, 【GCC】结合GPT4 延迟梯度学习1:公式推导及理论分析 例如: 延迟梯度为正数时,是单位时间内的排队队列长度的“增长速度” 延迟梯度与 发送速率(接收速率?)有直接的关系。 因为有 观测误差、随机因素、噪声,所以要对延迟梯度进行…...

灰豚数字人MotionAI大模型完成备案,模型已超百亿参数!

据8月5日网信办公告,灰豚数字人MotionAI大模型已完成备案。灰‬豚‬大模型拥有超过百亿参数,是综合全面性的视频生成大模型,融合了数字人大模型、声音大模型、文本大模型、视频大模型、图像大模型等技术。 灰豚AI数字人隶属于温州专帮信息科…...

zsh 配置 docker 自动补全

zsh 配置 docker 自动补全 在终端中使用 docker 的命令的时候必须要全部手敲,没有提示,于是就在找是否有自动补全的脚本,搜索了一圈踩了一些坑总结了一下具体的步骤。 首先执行如下命令: mkdir -p ~/.zsh/completion curl -L h…...

鸿蒙第三方应用.hap打包、安装流程。

最近在华为手表上安装第三方应用(源码打包构建应用,需要签名)。网上看了教程,在此记录下。 准备工作:先安装DevEco Studio开发工具。 进入华为 appgallery connect网站(注册、开发者实名认证) …...

leetcode:找到字符串中所有字母异位词

题目: 给定两s和p中所有p的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词指由相同字母重排列形成的字符串(包括相同的字符串)。 示例 : 输入 输出 解释 s "cbaebabacd", p "…...

C语言学习

学习内容 两道题目 猜数字游戏 goto语句 关机程序 代码 //4.编写代码&#xff0c;演示多个字符从两端移动&#xff0c;向中间汇聚 welcome to china!!!! //#include<windows.h> //#include<stdlib.h> //int main() //{ // char arr1[] "welcome to c…...

Java面试题:MySQL高频面试题

MySQL常见面试题01 1、B树跟B树的区别&#xff1f; MySQL为什么选择B树来存储索引&#xff1f; 层数低,可以存放的数据多 2、InnoDB和MyISAM的区别&#xff1f; i:天生支持行锁,手动支持表锁,有事务,索引和数据一起存储 m:支持表锁不支持行锁,无事务,索引和数据分开存储 3、…...

【2026 Python原生AOT编译终极指南】:零依赖、亚毫秒启动、生产级瘦身——来自CPython核心组的3项未公开落地规范

第一章&#xff1a;Python原生AOT编译的范式革命与2026技术定位Python长久以来以解释执行和动态特性见长&#xff0c;但启动延迟、内存开销与冷加载性能瓶颈正成为云原生服务、嵌入式边缘计算及实时AI推理场景的关键制约。2024年起&#xff0c;CPython官方正式接纳PEP 712&…...

AI编程助手功能解锁:开源破解方案与开发工具权限绕过技术探索

AI编程助手功能解锁&#xff1a;开源破解方案与开发工具权限绕过技术探索 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached y…...

告别Transformer的O(n²)烦恼:手把手带你用Mamba搭建一个长文本摘要Demo

突破长文本处理瓶颈&#xff1a;基于Mamba的高效摘要系统实战指南 当面对动辄数万字的学术论文、企业年报或用户反馈文档时&#xff0c;传统Transformer模型的内存消耗会随着文本长度呈平方级增长。我曾在一个金融数据分析项目中亲历过这种困境——当输入文档超过5000字时&…...

[技术解析] 差异图引导:破解无人机集群微小目标检测的“消失”难题

1. 无人机集群检测的痛点&#xff1a;为什么小目标会"消失"&#xff1f; 当你用无人机监控一片区域时&#xff0c;最头疼的莫过于屏幕上那些比蚂蚁还小的黑点——它们可能是入侵的无人机&#xff0c;也可能是需要追踪的野生动物。但传统算法处理这些目标时&#xff0…...

基于Arduino-ESP32的智慧社区车牌识别门禁系统:从边缘计算到场景落地

基于Arduino-ESP32的智慧社区车牌识别门禁系统&#xff1a;从边缘计算到场景落地 【免费下载链接】arduino-esp32 Arduino core for the ESP32 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 问题发现&#xff1a;传统门禁系统的技术瓶颈与边缘计算机…...

你的Xbox手柄电量还能撑多久?解决游戏中断的电量管家

你的Xbox手柄电量还能撑多久&#xff1f;解决游戏中断的电量管家 【免费下载链接】XB1ControllerBatteryIndicator A tray application that shows a battery indicator for an Xbox-ish controller and gives a notification when the battery level drops to (almost) empty.…...

为什么头部自动驾驶团队已在预研C++27反射?——静态反射在嵌入式ABI稳定、安全认证代码生成中的不可替代性揭秘

第一章&#xff1a;C27静态反射的演进脉络与战略定位C27静态反射并非凭空而生&#xff0c;而是ISO C标准化进程中长达十年深度探索的结晶。它继承并重构了C17的std::is_same、C20的std::source_location与反射TS&#xff08;P0194R8&#xff09;的语义骨架&#xff0c;同时彻底…...

Kubernetes网络入门004篇【20260407】

文章目录 Kubernetes 网络入门完整版(深度扩容侧重基础知识) 一、学习K8s网络前必须掌握的Linux网络基础 1.1 Linux Network Namespace(网络命名空间) 1.2 Veth Pair(虚拟以太网设备对) 1.3 Linux Bridge(Linux网桥) 1.4 iptables 1.5 路由表 二、K8s网络基础核心概念与…...

别再做老好人了,优秀PM都有攻击性!

在职场中&#xff0c;“老好人”似乎是一个自带“善意”的标签&#xff0c;但对于项目经理&#xff08;PM&#xff09;而言&#xff0c;这三个字往往意味着内耗、妥协与项目失控。很多PM深陷“讨好型人格”的陷阱&#xff0c;怕得罪客户、怕得罪团队、怕得罪领导&#xff0c;凡…...

2023年数字图像处理实战:从噪声滤除到图像恢复的八大核心考题解析

1. 椒噪声滤除&#xff1a;自适应中值滤波实战 遇到图像布满黑白噪点&#xff08;椒盐噪声&#xff09;时&#xff0c;传统中值滤波直接暴力替换像素可能误伤细节。去年帮学弟调试车牌识别系统时就遇到过这种情况——滤波后车牌数字"7"直接变成了"1"。后来…...