日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python实现接口自动化_python 实现接口自动化1

發布時間:2024/9/27 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实现接口自动化_python 实现接口自动化1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#coding="utf-8"

importxlrdfrom xlutils.copy importcopyimportrequestsfrom util.log importloggerfrom util.db_util importDBUtil#xlrd:讀取Excel文件數據#xlwt:寫入Excel 數據,缺點是無法復用,寫入會全部覆蓋,無法追加數據,為了方便用戶,寫入的話,比較推薦xlutils模塊,它可以復制原excel#formatting_info=True,保留Excel的原格式,這樣xlutils寫入后格式不變#xlrd模塊0.8版本后不支持以xlsx為后綴名文件,所以excel要用xls格式,不能會打不開

if __name__ == '__main__':

db=DBUtil()

db.get_con()

dir_path=r'E:\PyCharmWorkSpace\AutoInterfaceTest\testFile\test_interface005.xls'run_sheet_name="用例"summary_sheet_name="總結"

#統計成功數,失敗數

all_cases =0

statistics_success=0

statistics_fail=0#前置標志

pre_flag =Falsetry:#目錄加r可以取消轉義,不加r的話\改為\\即可

workbook=xlrd.open_workbook(dir_path,formatting_info=True)exceptFileNotFoundError:print ("File is not found.") #文件不存在

exceptPermissionError:print ( "You don't have permission to access this file.") #文件存在無權限訪問,例如文件被打開時無法寫入

else:

table= workbook.sheet_by_name(run_sheet_name) #根據sheet名字獲取sheet

new_workbook= copy(workbook) #復制文件,這樣將結果寫入excel

writeSheet = new_workbook.get_sheet(run_sheet_name) #獲取寫入用例sheet

writeSheet_summary=new_workbook.get_sheet(summary_sheet_name)#獲取寫入總結sheet

for i in range(1, table.nrows):

request_method= table.cell(i, 2).value

url= table.cell(i, 3).value

params= table.cell(i, 4).value

expected_results=table.cell(i,5).value

db_operations= table.cell(i, 9).value

sql= table.cell(i, 10).value

pre_request_method=table.cell(i, 12).value

pre_url= table.cell(i, 13).value

pre_params= table.cell(i, 14).valueif( request_method!="" and url!="" and params!="" and expected_results!=""):

logger.info("********************************************************************************************************************")

all_cases+=1

if(pre_request_method!="" and pre_url!=""and pre_params!=""):

logger.info("第" + str(i) + "個用例前置請求 url:" + pre_url + "請求參數:" +pre_params)if (pre_request_method == "get"):try:

res= requests.get(url=pre_url, params=pre_params)exceptException as result:

logger.info("第" + str(i) + "個用例前置請求異常:" +str(result))else:

logger.info("第" + str(i) + "個用例前置請求結果:" +res.text)

res_json= res.json() #將返回參數轉為json串,取某字段值,result_json[父元素1][子元素2]

pre_response_token = res_json["data"]["token"]

headers= {'Authorization-Qkids': pre_response_token}

pre_flag=Trueelif (pre_request_method == "post"):try:

res= requests.post(url=pre_url, data=pre_params.encode())exceptException as result:

logger.info("第" + str(i) + "個用例前置請求異常:" +str(result))else:

logger.info("第" + str(i) + "個用例前置請求結果:" +res.text)

res_json= res.json() #將返回參數轉為json串,取某字段值,result_json[父元素1][子元素2]

pre_response_token = res_json["data"]["token"]

headers= {'Authorization-Qkids':pre_response_token}

pre_flag=True

logger.info(pre_response_token)else:

logger.info("前置請求方式格式不正確")

headers= {'Authorization-Qkids': pre_response_token}elif(pre_request_method=="" and pre_url==""and pre_params==""):#不做任何操作

pass

else:

logger.info("第" + str(i) + "個用例:前置請求方式/前置url/前置請求參數未填")#前置請求就算報錯,第二個請求也會有相應錯誤提示,所以下面這段代碼不用放到前置后面,同級即可

logger.info("第" + str(i) + "個用例請求 url:" + url + "請求參數:" +params)if (request_method == "get"):try:if(pre_flag==True):

res= requests.get(url=url, params=params,headers=headers)else:

res= requests.get(url=url, params=params)exceptException as result:

statistics_fail+= 1logger.info("第" + str(i) + "個用例異常:" +str(result))

writeSheet.write(i,8, "N")else:

logger.info("第" + str(i) + "個用例結果:" +res.text)

writeSheet.write(i,6, res.text) #寫入整個返回結果

res_json = res.json() #將返回參數轉為json串,取某字段值,result_json[父元素1][子元素2]

response_message = res_json["message"]

writeSheet.write(i,7, response_message) #寫入返回的message

if (expected_results ==response_message):

logger.info("結果比對:Y")

writeSheet.write(i,8, "Y")

statistics_success+= 1

else:

logger.info("結果比對:N")

writeSheet.write(i,8, "N")

statistics_fail+= 1

elif (request_method == "post"):try:if(pre_flag==True):#假如請求body里面有漢字,需對data進行encode(),僅用于post請求

res = requests.post(url=url, data=params.encode(),headers=headers)else:

res= requests.post(url=url, data=params.encode())exceptException as result:

statistics_fail+= 1logger.info("第" + str(i) + "個用例異常:" +str(result))

writeSheet.write(i,8, "N")else:

logger.info("第" + str(i) + "個用例結果:" +res.text)

writeSheet.write(i,6, res.text) #寫入

res_json = res.json() #將返回參數轉為json串,取某字段值方式:result_json[父元素1][子元素2],例如res_json[data][name]

response_message = res_json["message"]

writeSheet.write(i,7, response_message)if (expected_results == response_message): #比對預期結果與返回結果

logger.info("結果比對:Y")

writeSheet.write(i,8, "Y")

statistics_success+= 1

else:

logger.info("結果比對:N")

writeSheet.write(i,8, "N")

statistics_fail+= 1

else:

logger.info("請求方式格式不正確")if (db_operations != "" and sql != ""):if (db_operations in (1, 2, 3, 4)):

db_result=db.other_data(db_operations, sql)

writeSheet.write(i,11, db_result)else:

logger.info("數據庫操作填寫不符合規則")elif (db_operations == "" and sql == ""):pass

else:

logger.info("數據庫操作/數據庫sql未填")elif (request_method == "" and url == "" and params == "" and expected_results == ""):#不做任何操作

pass

else:

logger.info("第" + str(i) + "個用例:請求方式/url/請求參數/期望結果未填")#%轉義方式:%%,其他使用\

logger.info("---------------------------------------------------------------------------------------------------------------------------------------------")

summary_str="總的請求用例數%d, 已通過%d,不通過%d, 通過比例%.2f%%"%(all_cases,statistics_success,statistics_fail,(statistics_success/all_cases)*100)

logger.info(summary_str)

logger.info("---------------------------------------------------------------------------------------------------------------------------------------------")

writeSheet_summary.write(0,1,summary_str)

new_workbook.save(dir_path)#最后將寫的保存

db.close_database()

總結

以上是生活随笔為你收集整理的python实现接口自动化_python 实现接口自动化1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。