版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Python+requests+unittest执行接口自动化测试详情目录1、安装requests、xlrd、json、unittest库2、创建六类PythonPackage3、创建一个Base_Page.py4、创建common类5、读取Excel数据表联合使用
1、安装requests、xlrd、json、unittest库
1pip命令安装:
pipinstallrequests
pipinstallxlrd
pipinstalljson
pipinstallunittest
2、创建六类PythonPackage
利用PageObjectModel设计理念创建六类PythonPackage(也可根据项目要求具体实施)
3、创建一个Base_Page.py
先在base包里创建一个Base_Page.py
1导入模块,并创建Base类,封装各类请求方法
importrequests#导入requests模块
classBase():
defmethod_post(self,url,params=None,data=None,headers=None,files=None):
returnrequests.post(url=url,params=params,data=data,headers=headers,files=files)
defmethod_get(self,url,params=None,data=None,headers=None,files=None):
returnrequests.get(url=url,params=params,data=data,headers=headers,files=files)
defmethod_put(self,url,params=None,data=None,headers=None,files=None):
returnrequests.put(url=url,params=params,data=data,headers=headers,files=files)
defmethod_delete(self,url,params=None,data=None,headers=None,files=None):
returnrequests.delete(url=url,params=params,data=data,headers=headers,files=files
因为每一个请求都会有params参数或是data参数,但是不可能两个都存在,所以这里用了None,依次类推
2适配于接口用例执行,读取Excel表时,将各类请求做判断,当符合哪一种时,就去执行哪一种
defrequests_type(self,method,url,params=None,data=None,headers=None,files=None):
ifmethod=='post'ormethod=='POST':
returnself.method_post(url=url,params=params,data=data,headers=headers,files=files)
elifmethod=='get'ormethod=='GET':
returnself.method_get(url=url,params=params,data=data,headers=headers,files=files)
elifmethod=='put'ormethod=='PUT':
returnrequests.put(url=url,params=params,data=data,headers=headers,files=files)
elifmethod=='delete'ormethod=='DELETE':
returnrequests.delete(url=url,params=params,data=data,headers=headers,files=files)
3将几种请求做简单调试,调试通了,那么我们就可以进行下一项
也可以对需要拿到cookie的接口进行封装方法保存:
defGet_Login_cookie(self,data):
res=self.method_post(url="请求网址",data=data)
return{"userId":str(res.json()['result']['userId']),"sessionId":res.json()['result']['sessionId']}
之后我们要将base页验证的这些代码做清除,否则的话永远都是调的这些接口
4、创建common类
再common类下创建commons.py文件,并创建common类
1封装日志方法
这里我添加了一个data包,用于存放xlrd表,以及html报告存放路径、log日志存放路径
log_path=r'D:\PycharmProjects\自动化接口\自动化接口测试\report\logs'
report_html=r'D:\PycharmProjects\自动化接口\自动化接口测试\report\html'
read_xlrd=r'D:\PycharmProjects\自动化接口\自动化接口测试\data'
classCommon():
#封装日志方法
defget_logs(self,path=log_path):
importlogging,time
logs=logging.getLogger()
logs.setLevel(logging.DEBUG)
path=path+'/'+time.strftime('%Y-%m-%d-%H-%M-%S')+'.log'
write_file=logging.FileHandler(path,'a+',encoding='utf-8')
write_file.setLevel(logging.DEBUG)
set_logs=logging.Formatter('%(asctime)s-%(filename)s-%(funcName)s-%(levelname)s-%(message)s')
write_file.setFormatter(set_logs)
pycharm_text=logging.StreamHandler()
pycharm_text.setFormatter(set_logs)
logs.addHandler(write_file)
logs.addHandler(pycharm_text)
returnlogs
2封装读取Excel表方法,把他转换成字典形式,方便json格式读取
#读取Excel表方法,方便后续读取接口用例数据
defReadExcelTypeDict(self,file_name,path=read_xlrd):
path=path+'/'+file_name
importxlrd
work_book=xlrd.open_workbook(path)#打开Excel表
sheets=work_book.sheet_names()#获取所有的sheets页
DatasList=[]
forsheetinsheets:
sheets=work_book.sheet_by_name(sheet)
nrows=sheets.nrows
foriinrange(0,nrows):
values=sheets.row_values(i)
DatasList.append(values)
title_list=DatasList[0]
content_list=DatasList[1:]
new_list=[]
forcontentincontent_list:
dic={}
foriinrange(len(content)):
dic[title_list[i]]=content[i]
new_list.append(dic)
returnnew_list#最终返回为字典形式有键和值
为什么要转换格式呢?
这里就涉及到了怎么设计一个自动化接口用例
用例的参数值要用json格式写入,不要有空格
预期结果的出参也要用json格式写入
不要有值都要用包起来
3封装一个生成HTML报告方法
#封装一个HTML报告方法
defGetHtmlResult(self,suite,title,path=report_html):
importHTMLTestReportCN,time
path=path+'/'+time.strftime('%Y-%m-%d-%H-%M-%S')+'.html'
withopen(path,'wb+')asf:
run=HTMLTestReportCN.HTMLTestRunner(stream=f,description='用户相关接口测试报告',tester='小白',title=title)
run.run(suite)
其余还有需要补充的可以继续添加,我这里三个基本够用
5、读取Excel数据表联合使用
在case包下创test用例,并调用我们在base页封装好的请求api以及common中的读取Excel数据表联合使用
1创建test_login.py
2导入unittest、common类下的commons类、ddt数据驱动、Base下的base_page页
importunittest
importddt
import自动化接口测试.monsascommon
from自动化接口测试.base.Base_PageimportBase
3搭建unittest框架内部,并填充方法
importunittest
importddt
import自动化接口测试.monsascommon
from自动化接口测试.base.Base_PageimportBase
r=common.Common().ReadExcelTypeDict('cezxhi.xlsx')#拿到具体的Excel表数据
@ddt.ddt#导入ddt模块
classTestLogin(unittest.TestCase):
@classmethod
defsetUpClass(cls)-None:#setupclass类方法全部用例开始前执行一次
cls.logs=common.Common().get_logs()#导入日志方法
cls.logs.debug('开始写入接口自动化测试用例')
@classmethod
deftearDownClass(cls)-None:
cls.logs.debug('自动化接口用例结束')
defsetUp(self)-None:
self.logs.debug('开始本条接口用例')
deftearDown(self)-None:
self.logs.debug('结束本条用例')
@ddt.data(*r)#引入ddt模块,读取拿到的数据
deftest_logins(self,pars):#用例方法名开头必须已testpars参数为接收的表数据值
importjson#导入json模块
dic=json.loads(pars['body参数值'])#将Excel数据中的参数值转变为json格式
url=pars['接口地址']#拿到请求url
yuqi=pars['预期结果']#拿到预期结果
fs=pars['请求方式']#拿到请求方式
result=Base().requests_type(method=f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于安全有趣的演讲稿
- 我为国货而骄傲演讲稿
- 固态电解质界面原子结构分析课题申报书
- 温州亚运会少儿演讲稿
- 疫情下的新挑战演讲稿
- 河南大学学生演讲稿格式
- 通信企业社会责任指引
- 《PLC控制技术及应用》课件-知识延伸:展厅人数控制系统
- 《变流器运行与维护》课件-3.1 任务一 风力发电系统控制
- 新生儿黄疸的并发症预防
- 监测系统技术难题研究报告
- 2026贵州双龙航空港开发投资(集团)有限公司第一批招聘10人笔试参考题库及答案解析
- 广东省广州市2026年普通高中毕业班综合测试(广州一模)英语试题
- 2026年常州纺织服装职业技术学院单招职业倾向性测试题库附参考答案详解(考试直接用)
- 初中地理八年级下册《北方地区自然地理特征与农业发展》教学设计
- 2025年面试题库34道及答案公务员题
- 2025急性冠脉综合征诊疗指南解读:诊断与管理策略课件
- 企业安全保卫培训课件
- 入孵合同解除协议
- 数据出境安全协议
- 5.7 三角函数的应用 课件(共22张PPT)
评论
0/150
提交评论