接口自动化【六】——接口关联之jsonpath提取+设置全局变量+通用封装

news2024/11/25 9:41:51

文章目录

  • 前言
  • 一、jsonpath提取
  • 二、jsonpath与excel当中提取表达式结合
  • 三、类的动态属性设置
  • 四、设置全局变量(这个模块就作为一个讲解)
  • 五、new_handle_global_data.py
  • 六、new_handle_extract.py
  • 七、test_new_upload_image.py 文件中上传图片的代码更改
  • 八、补充知识
    • 1、获取字典当中的值的两种写法
    • 2、函数的传参
  • 总结

前言

这章主要学习jsonpath的提取,动态属性的设置和提取。以及从Excel表格中拿取后在用例中进行操作。


一、jsonpath提取

1、学习地址和安装

jsonpath - json对象里面,进行搜索。

官方地址:https://goessner.net/articles/JsonPath/

jsonpath在线练习地址:http://jsonpath.com/

另一个地址:http://www.e123456.com/aaaphp/online/jsonpath/

第三方库 jsonpath

安装:pip install jsonpath

2、用法

导入函数:from jsonpath import jsonpath

返回值 = jsonpath(python字典,jsonpath的表达式)

如果没有提取到值,返回False

如果有提取到值,返回列表。

举例:

二、jsonpath与excel当中提取表达式结合

这里所谓的jsonpath与excel当中提取表达式结合,就是先把Excel中的表达式拿出来(这种拿取数据的方法可以是ddt数据驱动拿取,也可以是直接使用openpyxl中的函数去拿取),先转化为字典。再从字典中取值,拿到jsonpath的表达式。最后用jsonpath函数把所要从某个字典中具体要都字段值提取出来。

 注意:这里的new_dic这个空字典,事先也是不知道要定义,也是写着代码,写着写着就想到了,要把新的值放在一个字典里,所以在写18行代码的时候,就在外面临时想起定义了。

当然也可以加入判断来取值:

三、类的动态属性设置

这个类的动态属性,目前主要就是运用在全局变量里面。

运用的具体场景是:1、在没有执行代码之前,不确定这个类有多少个属性,也不确定什么时候有,它是不固定。

四、设置全局变量(这个模块就作为一个讲解)

我们知道在接口当中上一个接口的字段值,要拿给下一个接口来使用,这种叫做接口依赖。之前的做法是:使用类前置,类前置的意思就是,一旦执行这个类下面的方法,那么就先执行;类前置里面的代码。之前就是把登录的接口中token放在了类前置里面。一旦执行就里面获得token。

那么现在,我们需要从Excel中的读取的第一条数据,就去完成这个类前置获取登录的token的操作。

两个步骤:

第一:在Excel中的第一条数据就是用来解决登录获取token的操作。

第二:使用全局变量的方式去设置和获取这种动态属性。

 在目录当中建立一个helper的py文件夹,这个文件夹的作用就是用来处理全局变量的(包含:设置,引用全局变量)

这里面的py文件的顺序是:

glob_data.py

add_data.py

get_data.py

main.py

py文件里面的内容和作用:

glob_data.py文件的作用是:定义全局变量的类

这个类里面不定义任何函数,因为我只是对类的属性进行操作,不会对类的方法进行操作。

因为设置属性是动态设置的,那么是不会展示在类里面的(在类里面的是静态属性),那么动态属性是保存在哪里呢?是在计算机内存当中开辟了一个区域用来保存。

add_data.py的作用是:给自己定义的类设置动态属性

get_data.py的作用是:获取之前设置的动态属性的值

main.py的作用:用来执行add_data.py和get_data.py文件里面的函数。就是一并执行了

五、new_handle_global_data.py

在tools模块中放入handle_global_data.py文件

这个文件的作用是:创建一个GlobalData类(称之为:全局变量类),这个类的作用就是用来存在动态设置的属性

六、new_handle_extract.py

在tools模块中放入handle_extract.py文件

这个文件的作用就是:创建一个函数,函数的本质是用来处理从发送请求后得到的respone结果里面的token数据。 同时把token设置为全局变量。

七、test_new_upload_image.py 文件中上传图片的代码更改

Excel表格中放的数据(其中extract字段下面的值,是专门用来,做一个对发送请求后的返回的数据中的token值的提取,注意:这里的extract的值在表格中是字典的形式)

 new_handle_extract.py 文件中加入log后的效果:

test_new_upload_image.py 文件中加入log的效果:

八、补充知识:

1、获取字典当中的值的两种写法

2、函数的传参

(1)位置传参

第1 种方式是最“传统”的方式:一个函数可以定义不限个数参数,参数(形式参数)放在跟在函数名后面的小括号中,各个参数之间以逗号隔开。用这种方式定义的函数在调用的时候也必须在函数名后的小括号中提供相等个数的值(实际参数),不能多也不能少,而且顺序还必须相同。

# 位置传递实例:
def fun1(a,b,c):
  return a+b+c

print(fun1(1,2,3))

输出:6

(2)关键字传参

根据每个参数的名字写入函数参数,这种方式是精准传参

 # 关键字传递
 def fun2(a,b,c):
  return a+b+c
 
print(fun2(a=1,c=3,b=2))

输出:6

注意:在使用函数的时候,最好用精准传参的方式,这种是最不容易出错的。最容易出错的是位置传参。

参考博客主:

python中函数参数传递的三种方式_python中函数参数传递的几种方法_weixin_39708854的博客-CSDN博客

Python传递参数的5种方式_python 传参_前热火球员LeBron James的博客-CSDN博客


总结

这一章节,理解的含义很重要。核心思想就是全局类的设置和提取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/566518.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mybatis 在当前项目中的实际应用及自定义分页的实现

mybatis 在当前项目中的实际应用及自定义分页的实现 项目中分页代码的解耦 实现目标 实现目标,使用spring 提供的分页相关的类,避免代码中直接使用PageHelper 具体实现 创建自定义PageHelper,并使用spring-data-common提供的具体实现类操…

OTA升级技术概览

随着物联网技术的不断发展,越来越多的设备和系统需要进行远程升级以保持其安全性和功能性。OTA(Over-the-Air)升级技术是一种通过无线网络远程升级固件或软件的方法,已经成为现代工业、智能家居、汽车等领域中广泛应用的技术。本文…

欧拉公式——最令人着迷的公式之一

欧拉公式是数学里最令人着迷的公式之一,它将数学里最重要的几个常数联系到了一起:两个超越数:自然对数的底e,圆周率π;两个单位:虚数单位i和自然数的单位1,以及数学里常见的0。 ​而且它对数学领…

generate 和 summary 配合——解析 bingchat 逻辑

generate 和 summary 配合——解析 bingchat 逻辑 new bing 微软作为 openai 公司背后的大股东,多年投入一朝开花结果,当然要把 ChatGPT 技术融入到自己的核心产品中,提升整体生产力。微软的第一个措施,就是在必应搜索引擎 bing…

chatgpt赋能Python-python_span_抓取

介绍 随着互联网的不断发展,SEO(搜索引擎优化)已成为所有网站主人必须面对的问题。在SEO中,抓取是一个非常重要的环节,也是一个关键性的步骤,它直接影响到网站的排名。 在Python编程中,有很多…

Mac上安装多个版本的MySQL

文章目录 准备工作先确定自己机器是多少位的下载包 具体步骤1. 先安装低版本的MySQL2. 清理完后,再安装高版本的MySQL3. 将低版本的文件夹移回 /usr/local4. 切换版本5. 验证 扩展清理命令其他信息 准备工作 先确定自己机器是多少位的 uname -a输出X86_64&#xf…

【Error】Python3.7 No module named ‘_sqlite3‘ 解决方案

场景:docker容器运行keybert时出现错误 No module named ‘_sqlite3‘,是容器环境没有sqlite的库,如下图所示: 本机是能够正常导入sqlite3的,虚拟环境conda下也有该库。 python3.8版本的不可用于python3.7中&#xff0…

【LeetCode】169. 多数元素

169. 多数元素(简单) 方法一:sort排序,时间复杂度为O(nlogn) 思路 我自己的写法用了最简单的方法,首先使用 sort() 对数组元素按照从小到大进行排序,然后依次遍历每个元素,如果该元素的出现次…

CompletableFuture 异步编排如何使用?

概述: 在做提交订单功能时,我们需要处理的事务很多,如:修改库存、计算优惠促销信息、会员积分加减、线上支付、金额计算、生成产品订单、生成财务信息、删除购物车等等。如果这些功能全部串行化处理,会发费很长的时间…

【盘点】界面控件DevExpress WPF的几大应用程序主题

DevExpress WPF控件包含了50个应用程序主题和40个调色板,用户可以在发布应用程序是指定主题,或允许最终用户动态修改WPF应用程序的外观和样式,其中主题带有调色板,可以进一步个性化您的UI! PS:DevExpress …

oracle WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK问题分析

服务概述 财务系统出现业务卡顿&#xff0c;数据库实例2遇到>>> WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK! <<<错误导致业务HANG住。 对此HANG的原因进行分析&#xff1a; 故障发生时&#xff0c;未有主机监控数据&#xff0c;从可以获取的数据库A…

c++ 11标准模板(STL) std::map(三)

定义于头文件<map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class map;(1)namespace pmr { template <class Key, class T, clas…

使用Linkage Mapper工进行物种分布建模的步骤详解(含实际案例分析)

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Linkage Mapper解密数字世界链接 文章目录 引言:一、介绍二、数据准备2.1 物种分布数据获取2.2 环境变量数据获取2.3 数据预处理

【拼多多API 开发系列】百亿补贴商品详情接口,代码封装

为了进行电商平台 PDD 的API开发&#xff0c;首先我们需要做下面几件事情。 1&#xff09;开发者注册一个账号 2&#xff09;然后为每个 PDD 应用注册一个应用程序键&#xff08;App Key) 。 3&#xff09;下载 PDD API的SDK并掌握基本的API基础知识和调用 4&#xff09;利用SD…

CSS布局:浮动与绝对定位的异同点

CSS布局&#xff1a;浮动与绝对定位的异同点_cherry_vincent的博客-CSDN博客 浮动 ( float ) 和绝对定位 ( position:absolute ) 相同点&#xff1a; &#xff08;1&#xff09;都是漂起来( 离开原来的位置 ) &#xff08;2&#xff09;并且都不占着原来的位置 &#xff08;3…

Flutter 笔记 | Flutter 布局组件

布局类组件都会包含一个或多个子组件&#xff0c;布局类组件都是直接或间接继承SingleChildRenderObjectWidget 和MultiChildRenderObjectWidget的Widget&#xff0c;它们一般都会有一个child或children属性用于接收子 Widget。 不同的布局类组件对子组件排列&#xff08;layo…

企业级WordPress开发 – 创建企业级网站的优秀提示

目录 “企业级”是什么意思&#xff1f; 使用WordPress创建企业级网站有什么好处&#xff1f; 使用 WordPress 进行企业开发的主要好处 WordPress 可扩展、灵活且价格合理 WordPress 提供响应式 Web 开发 WordPress 提供了巨大的可扩展性 不断更新使 WordPress 万无一…

JAVA-创建PDF文档

目录 一、前期准备 1、中文字体文件 2、maven依赖 二、创建PDF文档方法 三、通过可填充PDF模板将业务参数进行填充 1、 设置可填充的PDF表单 2、代码开干&#xff0c;代码填充可编辑PDF并另存文件 一、前期准备 1、中文字体文件 本演示使用的是iText 7版本&#xff0c…

Jeddak-DPSQL 首次开源!基于差分隐私的 SQL 代理保护能力

动手点关注 干货不迷路 ‍ ‍1. 背景 火山引擎对于用户敏感数据尤为重视&#xff0c;在火山引擎提供的数据分析产品中&#xff0c;广泛采用差分隐私技术对用户敏感信息进行保护。此类数据产品通常构建于 ClickHouse 等数据引擎之上&#xff0c;以 SQL 查询方式来执行计算逻辑&a…

【计算机网络复习】第六章 关系数据理论 1

关系模式的设计 按照一定的原则从数量众多而又相互关联的数据中&#xff0c;构造出一组既能较好地反映现实世界&#xff0c;而又有良好的操作性能的关系模式 ●冗余度高 ●修改困难 ●插入问题 ●删除问题 ★产生问题的原因 属性间约束关系&#xff08;即数据间的依赖关系&…