# 介面測試自動化指令碼(整個流程的邏輯基本都是在這裡面實現,所需要的資料都是通過呼叫前面的封裝來獲取)
:# 第一步:新建乙個解析excel工具類的例項物件並且獲取"api"的sheet物件
parsee = parseexcel(
) parsee.loadworkbook(filepath)
sheetobj = parsee.getsheetbyname(
"api"
)#print(sheetobj)
# 第二步:通過active列的值來判斷"api"的sheet表哪些需要執行
activelist = parsee.getcolumn(sheetobj, api_active)
# 返回的是api_active這一列所有的資料內容組成tuple
for idx,cell in
enumerate
(activelist[1:
],2)
:# 去掉標題行,從第二行開始(符合直觀的顯示行)(2表示指定起始行從2開始,如果不寫預設從0開始)
#print(idx,cell)
if cell.value ==
"y":
# 獲取需要執行的介面所在行的行物件
rowobj = parsee.getrow(sheetobj, idx)
#返回的是乙個元祖
apiname = rowobj[api_apiname -1]
.value
requesturl = rowobj[api_requesturl -1]
.value
requestmethed = rowobj[api_requestmothod -1]
.value
paramstype = rowobj[api_paramstype -1]
.value
apitestcasefilename = rowobj[api_apitestcasefilename -1]
.value
#print(apiname,requesturl,requestmethed,paramstype,apitestcasefilename)
# 第三步:讀取介面用例表,獲取介面用例表裡的所有測試用例
casesheetobj = parsee.getsheetbyname(apitestcasefilename)
#obj資料型別
caseactiveobj = parsee.getcolumn(casesheetobj, case_active)
#tuple資料型別
for c_idx,c_cell in
enumerate
(caseactiveobj[1:
],2)
:if c_cell.value ==
"y":
# 說明此case需要被執行
caserowobj = parsee.getrow(casesheetobj, c_idx)
#返回的是乙個元祖
requestdata = caserowobj[case_requestdata -1]
.value
requestdata =
eval
(requestdata)
if requestdata else
#這一行**相當於下面的四行**(excel中讀取的都是字串,需要先eval()轉化成字典)
# if requestdata:
# requestdata = eval(requestdata)
# else:
# requestdata = {}
relydata = caserowobj[case_relydata -1]
.value
responsecode = caserowobj[case_responsecode -1]
.value
datastore = caserowobj[case_datastore -1]
.value
checkpoint = caserowobj[case_checkpoint -1]
.value
# 第四步:在介面傳送請求之前先做下資料依賴的處理(relydata列的值不為空才能進行處理)
if relydata:
######注意:這裡之前寫成了getrely,導致一直有問題
requestdata = getrely.get(requestdata,
eval
(relydata)
)#返回的是做完資料依賴處理的請求引數
#print("requestdata:",requestdata)
# 第五步:構造介面請求需要的資料
#http_code是大前提,responsecode在excel中設定成200
if datastore:
#print("當前用例需要依賴資料儲存")
relydatastore.do(
eval
(datastore)
, apiname, c_idx-
1, requestdata, response.json())
else
:print
("第%s個介面的第%s條用例不需要依賴資料儲存"
%(idx-
1,c_idx-1)
)else
:print
("第%s個介面的第%s條用例的協議code碼【%s】不滿足預期值【%s】!" \
)#預期值是excel中設定的
# 第七步:進行校驗點檢測功能的實現並且往excel中寫資料
if checkpoint:
errorinfo = checkresult.check(response.json(),
eval
(checkpoint)
)# print("errorinfo=",errorinfo)
# 注意往excel中寫值的時候,關閉excel,同時將excel中responsedata、status、errorinfo這三列的值清空
write_result(parsee, casesheetobj, response.json(
), errorinfo, c_idx)
else
:print
("第%s個介面的第%s條用例沒有設定校驗點!"
)else
:print
("第%s個介面的第%s條用例被忽略執行!"
%(idx-
1,c_idx-1)
)else
:print
("第%s個介面被設定忽略執行!"
%(idx-1)
)#-1是減標題行
if __name__ ==
"__main__"
: main(
)
介面自動化測試(一) 介面測試
介面測試是測試系統元件間介面的一種測試。介面測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的互動點。測試的重點是要檢查資料的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。其中介面協議分為http,webservice,dubbo,thrift,socket等型別,測試型別又主要...
專案二 介面自動化測試框架
struts 展示層 它呼叫業務層完成運算邏輯,業務層再呼叫持久層完成資料庫的讀寫 hibernate 持久層 建立一系列的持久化類,每個類的屬性都可以簡單的看做和一張資料庫表的屬性一一對應,當然也可以實現關聯式資料庫的各種表件關聯的對應。當我們需要相關操作是,不用再關注資料庫表。我們不用再去一行行...
介面自動化(二) 介面聯調
今天寫一下存在關係的介面,怎麼呼叫上乙個介面返回來的東西,以註冊 登入,忘記密碼 修改密碼為例,其中修改密碼會用到上乙個介面的token,直接上 都是上期的 重複的我就不解釋了,沒解釋過的我會加到注釋中 usr bin env python conding utf 8 import requests...