requests接口測試

一、介紹

Requests是一個很實用的Python HTTP客戶端庫,編寫爬蟲和測試服務(wù)器響應(yīng)數(shù)據(jù)時經(jīng)常會用到,Requests是Python語言的第三方的庫,專門用于發(fā)送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)

案例:測試聚合數(shù)據(jù)

代碼

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)

案例:測試聚合數(shù)據(jù)

代碼

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響應(yīng)

r.status_code? ? ? ? 響應(yīng)狀態(tài)碼r.heards? ? ? ? ? ? 響應(yīng)頭r.cookies? ? ? ? ? ? 響應(yīng)cookiesr.text? ? ? ? ? ? ? 響應(yīng)文本r. encoding? ? ? ? ? 當(dāng)前編碼r. content? ? ? ? ? 以字節(jié)形式(二進(jìn)制)返回

最常用的是根據(jù)響應(yīng)狀態(tài)碼判斷接口是否連通,經(jīng)常用于做接口中斷言判斷

六、Request擴(kuò)充

1.添加等待時間requests.get(url,timeout=1)#超過等待時間則報錯2.添加請求頭信息requests.get(url,headers=headers)#設(shè)置請求頭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 流程如下

讀取文件中的數(shù)據(jù)requests拿到數(shù)據(jù)請求接口返回狀態(tài)碼通過斷言驗證返回狀態(tài)碼和200對比生成allure的測試報告

7.2 模塊總覽

dataDemo(存放數(shù)據(jù))>> readDemo(讀取數(shù)據(jù))useRequests(發(fā)送請求)>>testDemo(生成報告)


7.3 讀取csv文件流程

7.3.1 存儲數(shù)據(jù)(csv)

通過excel另存為csv即可。


7.3.2 讀取數(shù)據(jù)(readDemo)


代碼展示

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請求接口返回狀態(tài)碼

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斷言設(shè)置并結(jié)合allure生成測試報告

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 測試報告展示

image-20210129190203625.png

7.4 讀取excle文件流程

7.4.1 存儲數(shù)據(jù)(xlsx)

image.png

7.4.2 讀取數(shù)據(jù)(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=[]# 把所有行的數(shù)據(jù)放到列表中foriinrange(2,sheet.max_row+1):sub_data={}# 把每行的數(shù)據(jù)放到字典中forjinrange(1,sheet.max_column+1):sub_data[sheet.cell(1,j).value]=sheet.cell(i,j).value? ? ? ? ? ? test_data.append(sub_data)# 拼接每行單元格的數(shù)據(jù)returntest_datat=Readxcel()f=t.getTestExcel()print(f)

7.4.3 request請求接口返回狀態(tài)碼

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斷言設(shè)置并結(jié)合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'])# 將測試報告轉(zhuǎn)為html格式split='allure '+'generate '+'./report/result '+'-o '+'./report/html '+'--clean'os.system(split)

7.4.5:測試報告展示

作者:Anwfly

鏈接:http://www.itdecent.cn/p/75327d2a99af

來源:簡書

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、介紹 Requests是一個很實用的Python HTTP客戶端庫,編寫爬蟲和測試服務(wù)器響應(yīng)數(shù)據(jù)時經(jīng)常會用到,...
    老友_9e40閱讀 289評論 0 0
  • 一、介紹 Requests是一個很實用的python HTTP客戶端庫,編寫爬蟲和測試服務(wù)器響應(yīng)數(shù)據(jù)時經(jīng)常會用到,...
    墨染殤淚閱讀 316評論 0 0
  • 1.介紹: Requests是一個很實用的Python HTTP客戶端庫,用來做接口測試 *做接口測試前需要pip...
    我向星明許愿閱讀 198評論 0 0
  • 1.介紹: Requests是一個很實用的Python HTTP客戶端庫,用來做接口測試 *做接口測試前需要pip...
    小董小董閱讀 190評論 0 0
  • 1.介紹: Requests是一個很實用的Python HTTP客戶端庫,用來做接口測試 *做接口測試前需要pip...
    Nostalgia_9ea7閱讀 197評論 0 0

友情鏈接更多精彩內(nèi)容