前提:pip install requests
get的請求:r = requests.get('http://www.baidu.com', params=payload)
post請求:r =requests.post("http://httpbin.org/post", data=payload)
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)常用于做接口中斷言判斷
requests+pytest+allure
流程如下
讀取文件中的數(shù)據(jù)requests拿到數(shù)據(jù)請求接口返回狀態(tài)碼通過斷言驗證返回狀態(tài)碼和200對比生成allure的測試報告
模塊總覽:
dataDemo(存放數(shù)據(jù))>> readDemo(讀取數(shù)據(jù))
useRequests(發(fā)送請求)>>testDemo(生成報告)
1.讀取csv文件流程:通過excel另存為csv即可
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
3.request請求接口返回狀態(tài)碼
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
pytest斷言設(shè)置并結(jié)合allure生成測試報告
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)
讀取excle文件流程
1 存儲數(shù)據(jù)(xlsx)
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)
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())
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)