您现在的位置是:首页 >技术杂谈 >接口自动化【三】(接口依赖之上传图片;Template 模块用法)网站首页技术杂谈
接口自动化【三】(接口依赖之上传图片;Template 模块用法)
前言
本章中,对接口的依赖做了阐述,后台上传图片。以及使用Template模块进行字符串的替换。
一步一步的加深,对单独线性和对一个功能封装代码的进阶阐述。
提示:以下是部分知识点的补充,做一个参考。截图中的备注信息也是重点。
一、后台上传图片接口
我们知道上传图片,肯定是在账号登录了的情况下才能够进行操作。那么在上传图片里面,我们首先会考虑到拿到登录后的某个东西。才能够带着这个东西进行操作,如果没有这个东西,那么就相当于识别不了是否是登录状态。这个东西就是我们平时说的token。这个token就相当于是一把钥匙。
1) 先登录,拿到鉴权。
2)带上token
请求头里:Authorization bearer52062948-9cd9-4455-a5e7-222caf9a045d
上传图片地址:http://mall.lemonban.com:8108/admin/file/upload/img
请求方式:post
content-type:multipart/form-data
上传图片成功之后,数据库:tz_attach_file
注意:这个说的这个数据库里,是指在数据库里面这个表当中有这张图片了。对比可以到数据库去看看。思想是:查询到这张图片,进行键值比对。
这里标红的地方就是最重要的地方。
注意点1:
这里的 "Authorization": "bearer"+token 这个token是从登陆的那个步骤提取出来的,需要与bearer做组合。
组合方式可以有两种写法:
(1)headers1 = {"Authorization": f"bearer{token}"}
(2)headers1 = {"Authorization": "bearer"+token}
一个用正常的字符拼接;一个用 f 表达式
注意点2:
我们从这个上传图片接口的请求里面,也可以看出这个name也是file
Python中files字段中的三种上传图片的方式:
二、用postman来做这种有依赖的接口
依赖:指上一个接口的部分数据,我们要拿到下一个接口中使用。(也可以说下一个接口,要用到上一个接口返回的部分数据)
这里有个很好的工具:Apipost
1、下面使用Apipost做接口测试:
2、用Apipost一个更简单的方法:
注意点:
(1)在第二个接口里面直接把鉴权的token放在专门放鉴权的地方,不用放在请求头里面。
(2)请求头里面不放Content_Type
(3)body里面不用指明内容类型
三、使用 Template 模块进行字符串的替换
string的Template模块用法:
1、from string import Template
2、tempTemplate = Template(含有要替换的变量) 要替换的变量前面加$
{"file": ("$img_name", open("$img_path", "rb"), "image/png")}
3、tempTemplate.substitute(要替换的变量名=替换值,要替换的变量名=替换值)
new_str =tempTemplate.substitute(img_name=img_name,img_path=img_path)
注意:
举例:
使用了字典的取值方式进行值的替换
四、使用 Template 模块进行字符串的替换(针对于Excel表格中的数据)
对与这种复杂的数据我们先一步一步的实现。我们之前已经讲解了Template的用法。那么要替换Excel表格里面的数据,首先我们得拿到表格中的要替换的数据(字符串)。
我们先从最简单的替换入手:
1、使用py文件里面的数据,后面我们再使用Excel表格中的数据。
2、使用Excel表格中的数据
(首先我们先要从表格中拿到数据)
3、把单个的代码装到函数中
这里也就是把零散的步骤,装到函数中
4、现在使用类来实现这个功能
5、现在使用unitetest框架来实现
6、使用ddt和unitetest框架结合
补充点额外的知识:
我们平时使用Excel表格中的数据,其实拿出来后就是一个列表中装了一个字典。
对一个列表进行for循环,那么拿出来的数据就是一个字典。
举例:
总结
这里面设计到很多细节的点,需要逐步一个一个知识点的突破,从最简单的框架入手,再依次复杂的进入多个知识点的融合。
有点繁琐,也容易昏。我整理这个知识点,耗费了我很多时间。到后期会花费更多的时间。但是对于自己建立自己的框架体系有很大的作用。