文章目录
- 前言
- 一、封装发送请求的操作
- 二、迷惑的知识点
- 三、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做上下接口的依赖进行点播。