当前位置: 首页 > 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、…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...