Python+requests+unittest执行接口自动化测试详情_第1页
Python+requests+unittest执行接口自动化测试详情_第2页
Python+requests+unittest执行接口自动化测试详情_第3页
Python+requests+unittest执行接口自动化测试详情_第4页
Python+requests+unittest执行接口自动化测试详情_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论