接口自动化【五】(HandleRequests类的封装,及postman上下接口依赖的初步认识)

news2024/10/1 21:27:54

文章目录

  • 前言
  • 一、封装发送请求的操作
  • 二、迷惑的知识点
  • 三、postman的全局变量机制
  • 总结

前言

所有的封装就是一种思想,这种思想能不能想到,其实跟写代码建立思维有很大的关系。

下面也是我学到的一种思想,其中对每个函数有解读。以及易错点的总结。

实际的运行我也成功了。


一、封装发送请求的操作

1、目的:我们封装一个类,以后发送请求就只调用这一个类就行了,不用再去写太多的重复的代码。

(1)关于http请求的日志,都只在当前文件中写一次。所有的接口用例调的时候,就不用再写日志了

(2)不同的接口,都可以调统一的http请求方法,请求参数一致,只不过有的传有的不传。

(3)其它处理

2、封装思想的讲解

(1)在tool文件夹中建立一个new_handlerequests.py的文件

(2)在这个HandleRequests类中主要处理几件事情

第一:发送正常的请求

第二:在内部处理token

第三:在内部处理files

第四:在内部处理请求头的添加

下面就一一讲解三个函数:

 

 

 这里定义成私有方法的目的是拿给自己内部使用,不会对外开放这个函数。__pre_header函数主要是用来处理请求头,在这里是专门对token进行处理。

__pre_header函数:

如果函数接收了token字段值,接下来进入if判断语句,如果token有值(不为空),那么就会和bearer字段做拼接,拼接完了之后的值是"Authorization"字段的值。然后把这个新的请求头添加到

__init__函数下面固定的headers中去。

在这里面使用了logger.info这个打印日志的函数,其实做的目的就是不管我的请求头是否添加到self.headers这个字典里面,我都想打印出来看看这个字典里面的东西。

__pre_files函数:

这个函数的作用就是为了处理上传文件。

首先是判断这个传进来的files字段值是否有值和是否是字符串。

 这里的 image_name, image_path两个变量分别由后面的函数返回对应的值。一个返回图片名称,一个返回图片路径。

其中使用了随机函数random.randint(),目的是从装图片的文件夹里面随机拿一张图片。

其中的Template是个类,下面使用了这个类里面的substitute()函数,目的是替换从Excel表格中读取的files字段中的一些要替换的值。

这里插入了一条open()函数,因为图片的上传是以二进制形式,所以必须做这一步操作。

 这个地方使用eval的原因是因为从Excel中读取的files字段是字符串,但是在request请求中,发送的是字典,所以转换。

return files:因为写在了if判断语句的外面,所以这一步的作用是无论files是不是符合if条件,都有返回值

 __pre_json函数:

这个函数是处理json字符串的,如果是字符串就要转化成字典的格式。

因为从Excel表格中读取出来的数据,都是字符串类型,实际上request请求中所要的参数类型是字典。因此这里需要用eval()函数进行转一下。

eval()函数的作用就是脱去外层(简称:脱衣服函数)。

**************************************下面是代码展示******************************************

目录结构层级

(1)Excel表格中的数据(上传图片的Excel)

(2)Excel表格中的数据(登录的Excel)

sitting文件中的代码

 new_handlerequests.py文件中的代码

(注意这里面的一些其他模块的函数引用需要结合另一个文件),这里的代码是提供一种思想。

test_new_upload_image.py文件中的代码

(这里面就是直接使用自己封装好HandleRequests类中的函数)

test_new_login.py文件中的代码

 test_login_success1函数中加入断言后的效果:

二、迷惑的知识点

关于if条件的

1、当使用if和else时:

2、只使用if不使用else时:

 这两种写法,对于代码运行的结果是一样的。含义其实也是一样的。第二种方式相当于第一种的简写,但是第二种更容易迷惑人。

之前在__per_files函数 里面出错了

这个地方 return new_files 的意思是当满足了if条件时候,if语句执行完了之后,会把new_files返回出来。

那么就有个问题,如果不执行if条件语句,那么这返回就会报错,因为并没有这个new_files字段。

因此最好就用if....else语句保险点。

三、postman的全局变量机制

这里所说的全局变量机制,也是由下一个接口依赖上一个接口的数据,需要提取出上一个接口中的某些值,所以引入了全局变量的机制,之前我在做这种依赖的接口,虽然不是用的全局变量,但是用了普通的环境变量。

接口自动化【三】(接口依赖之上传图片;Template 模块用法)_撑着海浪游太空的博客-CSDN博客

那么这一章节的内容,需要到下一个章节去学习。jsonpath的使用。


总结

这章讲解了HandleRequests类的封装以及对封装函数的讲解,中间踩坑的总结,和对postman做上下接口的依赖进行点播。

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

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

相关文章

算法小课堂(九)分支限界法

一、概述 1.1概念 分支限界法是一种求解最优化问题的算法,常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。其基本思想是把问题的可行解展开,再由各个分支寻找最佳解。 在分支限界法中,分支是使用广…

Go 语言核心编程-环境入门篇

第 1 章 Golang 开山篇 1.1 Golang 的学习方向 Go 语言,我们可以简单的写成 Golang 1.2 Golang 的应用领域 1.2.1区块链的应用开发 1.2.2后台的服务应用 1.2.3云计算/云服务后台应用 1.3 学习方法的介绍 1.4 讲课的方式的说明 努力做到通俗易懂注重 Go 语言体系&…

【软件测试项目】湖南交警一网通测试计划_2.0正版

目录 一、引言 1.1 编写目的 1.2 项目背景 1.3 适用范围 1.4 专业术语 二、测试任务 2.1 测试范围 2.2 测试目标 2.3 参考文档 2.4 提交文档(交付件) 三、测试进度 四、测试资源 4.1 人力资源 4.2 环境资源 4.3 测试工具 五、测试策略 5.1 功能测试 5.2 压力…

vue中 process.env与process.VUE_CLI_SERVICE

在vue中设置环境变量离不开process.env属性,那么如何设置自定义环境变更呢? 可以通过设置.env文件或者借助process.VUE_CLI_SERVICE来设置 process process 对象是一个 global (全局变量),提供有关信息,控…

基于差分进化算法的微电网调度研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Java经典笔试题—day12

Java经典笔试题—day12 🔎选择题🔎编程题🥝二进制插入🥝查找组成一个偶数最接近的两个素数 🔎结尾 🔎选择题 (1)以下方法,哪个不是对add方法的重载? public class Test {public void add( in…

智慧井盖监测终端,智能井盖-以科技解决智慧城市“顽疾”,守护城市生命线

平升电子智慧井盖监测终端,智能井盖-以科技解决智慧城市“顽疾”,守护城市生命线-智慧井盖,实现对井下设备和井盖状态的监测及预警,是各类智慧管网管理系统中不可或缺的重要设备,解决了井下监测环境潮湿易水淹、电力供应困难、通讯不畅等难题…

MySQL主从复制原理

一、概述 1、什么是主从复制 主从复制是用来建立一个和 主数据库完全一样的数据库环境称为从数据库;主数据库一般是准实时的业务数据库。 2、主从复制的作用 高可用,实时灾备,用于故障切换。比如主库挂了,可以切从库。读写分离…

nginx配置监听443端口,开启ssl协议,走 https 访问

本文目录 前言一、检查 linux 服务器上的 nginx 是否安装 ssl 模块二:为 nginx 安装 ssl 模块三、nginx 开启 443 端口监听(https配置)成功配好后的效果如下遇到的问题一:证书无效遇到的问题二:连公司的网络走 https 能…

飞书自建无需代码连接Flomo的方法

飞书自建用户使用场景: 公司的飞书群里,有一个名为“新产品开发”的群组,用于讨论公司新产品的开发。该群组中设置了一个机器人,名为“新产品助手”。当群组成员在讨论中需要记录一个新的产品想法时,他们可以这个机器人…

[Halcon3D] 主流的3D光学视觉方案及原理

📢博客主页:https://loewen.blog.csdn.net📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由 丶布布原创,首发于 CSDN,转载注明出处🙉📢现…

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法

一种高效的WS2812B控制算法——基于STM32G431CBU6的SPIDMA 1.WS2812B介绍 ws2812b是一款集控制电路与发光电路于一体的智能外控LED光源,采用单线归0码协议,每个像素点的三基色颜色可实现256级亮度显示。速率能达到1024pixel 30fps / s,故被…

什么是可信时间戳?可信时间戳电子取证有效吗?

电子数据具有脆弱性、易变性、隐蔽性、载体多样性等特点,容易被复制、删除、篡改且难以被发现。因此,电子数据在实际的司法认定过程中,很难准确鉴定其生成的时间以及内容的真实性、完整性。可信时间戳是一种公认的技术手段,可为电…

拉格朗日插值定理

拉格朗日插值法是一种函数逼近方法,通过已知的数据点构建一个多项式函数,该函数能够恰好经过这些数据点。它可以用于插值,即根据给定的离散数据点推断出未知函数在其它点上的取值。拉格朗日插值法的优点是计算简单,容易理解和实现…

从初级软件测试,到高级软件测试的必经之路

作为软件质量控制中的重要一环,软件测试工程师基本处于"双高"地位,即:地位高、待遇高,而随着软件测试行业等级越来越专业化,软件测试工程师也随即被分为不同的等级,即:初级测试工程师…

《SQUID: Deep Feature In-Painting for Unsupervised Anomaly Detection》论文阅读理解

《SQUID: Deep Feature In-Painting for Unsupervised Anomaly Detection》论文阅读理解 领域:用于医学图像的异常检测 论文地址:SQUID: Deep Feature In-Painting for Unsupervised Anomaly Detection 目录 《SQUID: Deep Feature In-Painting for Un…

5月19号软件资讯更新合集.....

ohUrlShortener 短链接系统 v2.0 发布 | 指定「打开方式」功能支持 距上一次更新版本差不多两个月,ohUrlShortener 短链接系统与昨天晚上正式发布 v2.0 版本 这个版本主要的变化: 启动性能优化:在短链接数量持续上升之后,启动系…

Halcon 算子 select_shape_std 和 select_shape_xld区别

文章目录 1 select_shape_std 算子介绍2 select_shape_xld算子介绍3 select_shape_std 和 select_shape_xld区别4 Halcon 算子的特征 Features 列表介绍1 select_shape_std 算子介绍 select_shape_std (Operator) Name select_shape_std — Select regions of a given shape.Si…

JavaWeb14 - 数据交换 - 01 - JSON

1. 概述 1.1 官方文档 Json 在线文档:https://www.w3school.com.cn/js/js_json_intro.asp 1.2 JSON 介绍 JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)JSON 是轻量级的文本数据交换格式【老师解读】 JSON 独立于语言 …

Cloud Studio 内核升级之专注体验

前言 Cloud Studio 是基于浏览器的集成式开发环境(IDE),为开发者提供了一个永不间断的云端工作站。用户在使用 Cloud Studio 时无需安装,随时随地打开浏览器就能使用。云端开发体验与本地几乎一样,上手门槛更低&#…