總結大部分人作接口自動化的流程後,發現基本上都是:python + requests作接口請求;Excel用來存儲用例;HTMLTestRunner生成測試報告;Jenkins完成定時任務。html
其實在完成這個流程的過程當中,代碼編寫只佔用了一小部分的時間,大部分的時間都浪費在搭建環境和用例編寫上。這裏我記錄一些遇到的問題。python
1、接口請求
(1)配置請求方法:get 和 post 方法簡單封裝,header中參數設置json
# _*_coding:utf-8 _* import requests #get請求 def get(url,querystring): headers = requestHeader() response = requests.request("GET", url, headers=headers, params=querystring) # print response.url return response #post請求 def post(url,payload,querystring): headers = requestHeader() response = requests.request("POST", url, data=payload, headers=headers, params=querystring) # print response.url return response #設置請求的header def requestHeader(): headers = { 'Content-Type': "application/json", 'Cache-Control': "no-cache" } return headers
(2)針對post請求的body,開始時使用的時text的dict去請求,請求錯誤老是返回:"請求參數錯誤",後來使用postman進行調試,直接複製已經轉換成json格式的body傳參進行請求,終於成功。
app
能夠經過這個方式去轉換一些有問題的body。post
(3)body轉換爲json的另外一種方式:經過ast模塊進行轉換(推薦)測試
import ast caseParams = ast.literal_eval(caseParams)
(4)經過openpyxl模塊獲取用例Excel
url
#用例名 caseName = caseFile.getCellVaule(ws,rowIndex,1) #url caseUrl = caseFile.getCellVaule(ws,rowIndex,3) #請求方式 caseMethod = caseFile.getCellVaule(ws,rowIndex,4) #參數 caseParams = caseFile.getCellVaule(ws,rowIndex,5)
備註:在獲取用例信息的過程當中,須要對一些參數進行容錯
A:是否有參數,若無參數,需傳空;
B:get參數和post body須要分開處理:
get的參數是以 '¶m'形式明文拼接在url中;spa
#將請求參數轉換爲json格式 caseParams = ast.literal_eval(caseParams) keys = dict(caseParams).keys() values = dict(caseParams).values() for x in xrange(0,len(keys)): tempQuery[keys[x]] = values[x]
post的body須要放在dict中進行傳參;調試
caseParams = ast.literal_eval(caseParams)
(5)分割所需的參數,將結果寫入到文件內code
#請求返回的內容,轉換爲json格式 text = json.loads(response.text) caseFile.setCellValue(ws,rowIndex,6,response.text) #URL請求耗時 spendTime = response.elapsed.total_seconds() caseFile.setCellValue(ws,rowIndex,7,spendTime) #請求結果狀態 statue = response.status_code caseFile.setCellValue(ws,rowIndex,8,statue) self.assertEqual(statue, 200)
(6)將請求結果寫入html文件,並展現
(7)配置到Jenkins,定時執行查看接口的可達性