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

news/2025/3/1 1:41:27/

文章目录

  • 前言
  • 一、封装发送请求的操作
  • 二、迷惑的知识点
  • 三、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.ppmy.cn/news/71221.html

相关文章

unity进阶学习笔记:json和xml

1早期的数据格式 在早期程序开发中一个简单且常用的数据格式为CSV。该格式单纯依靠逗号来分割数据。目前windows的office依然支持CSV解析,我们可以试着新建一个txt文件,在里面加入逗号分隔的信息: a, 1, 15, 30, true 将txt文件后缀改为csv&…

【计算机网络】总结复习(1)

本文主要记录在看小林coding 时的一些体会,会记录一些我认为重要的知识点以及感受 网络基础篇 osi 七层协议 tcp/ip 四层协议 应用层 传输层 网络层 网络接口层 实际场景: 输出网址 到 网页显示 过程url 解析(协议web 服务器 数据源路径…

用项目管理思维来过5·20,真实太酷啦!

明天就是一年一度的520啦,阿道单身多年的同事刚京在四月成功使用SWOT分析模型相亲成功,牵手女嘉宾。二人眼看着就要迎来在一起后的第一个节日520,刚京却因为没有头绪而陷入了不知所措的焦虑。 团队成员齐上阵,用项目管理思维&…

【linux】:获取系统内存及内存清理操作(python)

获取系统内存操作(python) 1.os.statvf()函数介绍2.系统剩余内存获取:3.文件清理 1.os.statvf()函数介绍 os.statvfs() 方法用于返回包含文件描述符fd的文件的文件系统的信息。 语法 statvfs()方法语法格式如下: os.statvfs([pa…

【Java】jieba结巴分词器自定义分词词典 超详细完整版

发现一款很轻量好用的分词器->结巴分词器 分享给大家 不仅可以对常规语句分词,还可以自定义分词内容,很强大!! 源码地址👉:https://github.com/huaban/jieba-analysis 简单使用 如果是常规的语句&#…

基于 KONOS 编写一个部门级的前端框架

01 什么是 konos 现在对于前端框架的定义越来越广泛了,在前端工程化中的某一个环节的特定方案,都可泛称为一个前端框架。 konos 是一个插件化的前端框架基座,如果你对 umi 有所了解的话,可以把它当作一个没有任何功能的 umi core …

《终身成长》笔记一——人的表现不能只根据一次评估来断定

目录 内容简介 经典摘录 1、会有人热爱失败吗 2、人为什么会有不同 3、两种思维模式对人意味着什么 4、 两种思维模式之下的不同生活 5、【成长型思维模式】下你将会看到什么 6、但教书育人不就是学校要做的吗?他们来到学校,就是为了学习如何去做…

gtest安装

sudo apt update sudo apt install build-essential cmake git clone https://github.com/google/googletest.git cd googletest mkdir build cd build cmake … make ./bin/gtest_unittests(测试一下gtest是否正常,但我这bin下没有内容) sud…