当前位置: 首页>前端>正文

接口测试自动化

接口自动化框架搭建_晒不黑的黑煤球的博客-CSDN博客_接口自动化框架

一、介绍

Requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到,Requests是Python语言的第三方的库,专门用于发送HTTP请求

二、前提

pip install requests

三、get的请求

3.1 GET无参请求

r=requests.get('http://www.baidu.com')

3.2 GET传参

payload={'key1':'value1','key2':'value2','key3':None}r=requests.get('http://www.baidu.com ',params=payload)

案例:测试聚合数据

代码

importrequestsclassUseRequestClass():#get传参的第一种方式defXWTTMethod(self):r=requests.get("http://v.juhe.cn/toutiao/index?type=guonei&key=4b72107de3a197b3bafd9adacf685790")print(r.text)#get传参的第二种方式defXWTTMethod(self):params={"type":"guonei","key":"4b72107de3a197b3bafd9adacf685790"}r=requests.get("http://v.juhe.cn/toutiao/index",params=params)print(r.text)

四、post请求

类似python中的表单提交

payload={'key1':'value1','key2':'value2'}r=requests.post("http://httpbin.org/post",data=payload)

案例:测试聚合数据

代码

importrequestsclassUseRequestClass():defXWTTPostMethod(self):params={"type":"guonei","key":"4b72107de3a197b3bafd9adacf685790"}r=requests.post("http://v.juhe.cn/toutiao/index",params=params)#print(r.status_code)returnr.status_code

五、Requests响应

r.status_code? ? ? ? 响应状态码r.heards? ? ? ? ? ? 响应头r.cookies? ? ? ? ? ? 响应cookiesr.text? ? ? ? ? ? ? 响应文本r. encoding? ? ? ? ? 当前编码r. content? ? ? ? ? 以字节形式(二进制)返回

最常用的是根据响应状态码判断接口是否连通,经常用于做接口中断言判断

六、Request扩充

1.添加等待时间requests.get(url,timeout=1)#超过等待时间则报错2.添加请求头信息requests.get(url,headers=headers)#设置请求头3.添加文件requests.post(url,files=files)#添加文件

文件传输

url='http://httpbin.org/post'files={'file':open('report.xls','rb')}r=requests.post(url,files=files)

七、requests+pytest+allure

7.1 流程如下

读取文件中的数据requests拿到数据请求接口返回状态码通过断言验证返回状态码和200对比生成allure的测试报告

7.2 模块总览

dataDemo(存放数据)>> readDemo(读取数据)useRequests(发送请求)>>testDemo(生成报告)

接口测试自动化,第1张

image-20210129185952659.png

7.3 读取csv文件流程

7.3.1 存储数据(csv)

通过excel另存为csv即可。

接口测试自动化,第2张

image-20210129190024482.png

7.3.2 读取数据(readDemo)

接口测试自动化,第3张

image-20210129190046300.png

代码展示

importcsvclassReadCsv():defreadCsv(self):item=[]rr=csv.reader(open("../dataDemo/123.csv"))forcsv_iinrr:item.append(csv_i)item=item[1:]returnitem

7.3.3 request请求接口返回状态码

接口测试自动化,第4张

image-20210129190121055.png

代码展示

importrequestsfromreadDataDemo.readcsvimportReadCsvr=ReadCsv()ee=r.readCsv()# print(ee)classRequestCsv():defrequestsCsv(self):item=[]forcsv_iinee:ifcsv_i[2]=="get":rr=requests.get(csv_i[0],params=csv_i[1])item.append(rr.status_code)else:rr=requests.post(csv_i[0],data=csv_i[1])item.append(rr.status_code)returnitem

7.3.4 pytest断言设置并结合allure生成测试报告

接口测试自动化,第5张

image-20210129190143643.png

代码展示

importpytest,os,allurefromuserequests.userequestsDemo.requestscsvimportRequestCsvr=RequestCsv()ee=r.requestsCsv()print(ee)classTestClass02():deftest001(self):forcodeinee:assertcode==200if__name__=='__main__':pytest.main(['--alluredir','report/result','test_02csv.py'])split='allure '+'generate '+'./report/result '+'-o '+'./report/html '+'--clean'os.system(split)

7.3.5 测试报告展示

接口测试自动化,第6张

image-20210129190203625.png

7.4 读取excle文件流程

7.4.1 存储数据(xlsx)

接口测试自动化,第7张

image.png

7.4.2 读取数据(readDemo)

安装openpyxl:pip install openpyxl

fromopenpyxlimportload_workbookclassReadxcel():defgetTestExcel(self):# 打开表workbook=load_workbook("G:\python\pythonProject\pytest05a\\requestdemo\\a.xlsx")# 定位表单sheet=workbook['Sheet1']print(sheet.max_row)# 3 行print(sheet.max_column)# 3 列test_data=[]# 把所有行的数据放到列表中foriinrange(2,sheet.max_row+1):sub_data={}# 把每行的数据放到字典中forjinrange(1,sheet.max_column+1):sub_data[sheet.cell(1,j).value]=sheet.cell(i,j).value? ? ? ? ? ? test_data.append(sub_data)# 拼接每行单元格的数据returntest_datat=Readxcel()f=t.getTestExcel()print(f)

7.4.3 request请求接口返回状态码

importrequestsfromrequestdemo.readexcelimportReadxcelclassGetStatusCode():defgetStatusCode(self):t=Readxcel()f=t.getTestExcel()item=[]forexcel_iinf:ifexcel_i["method"]=="get":rr=requests.get(excel_i["url"],params=excel_i["params"])item.append(rr.status_code)else:rr=requests.post(excel_i["url"],data=excel_i["params"])item.append(rr.status_code)returnitemprint(GetStatusCode().getStatusCode())

7.4.4 pytest断言设置并结合allure生成测试报告

importallure,pytest,osfromrequestdemo.getStatusCodeimportGetStatusCodeget=GetStatusCode()statusCodes=get.getStatusCode()classTestReadExcel():deftestReadExcel(self):forcodeinstatusCodes:assertcode==200if__name__=="__main__":# 生成测试报告jsonpytest.main(["-s","-q",'--alluredir','report/result','testreadexcel.py'])# 将测试报告转为html格式split='allure '+'generate '+'./report/result '+'-o '+'./report/html '+'--clean'os.system(split)

7.4.5:测试报告展示

接口测试自动化,第8张

https://www.xamrdz.com/web/2t81996046.html

相关文章: