Excel+Python十分鐘跑完批次API,就是這麼簡單粗暴又好用

博為峰網校發表於2019-12-30


現在API測試被越來越多的公司重視,對於測試工程師來說每次收到需求之後首先要做的是研究需求文件。既然介面是兩個獨立系統之間同步資料或訪問對方程式的途徑,我們也就是要先看看這些介面到底是連線了哪兩個系統,它們之間的關係到底是怎樣的。所以一般需求文件裡會包括介面名稱,介面描述,介面型別,介面地址,推送引數,返回引數這幾項內容。熟悉Postman的同學可以發現這些都是必需的部分:

Excel+Python十分鐘跑完批次API,就是這麼簡單粗暴又好用

有了這幾項內容之後,我們需要把需求文件轉換成Excel,這樣不管是做案例管理,還是對比結果,都相對容易一些。而後期Python讀取和寫入也更方便。在Excel中,我們只寫入變化的部分,而對於相對固定的,例如server資訊則直接在Python程式碼中引數化。所以做出來的輸入文件如下:

Excel+Python十分鐘跑完批次API,就是這麼簡單粗暴又好用

有了這些內容,我們還是使用xlrd和xlwt包對excel進行處理,對於如何使用xlrd和xlwt就不在本文做過多解釋了。為什麼要新建一個workbook2?因為在跑完一遍之後,如果我們發現有些介面跑出來的結果有問題,我們可以不用關閉workbook1,直接進行修改,然後rerun,就會生成新的workbook2,覆蓋之前的結果,節省開啟關閉workbook的時間。

workbook1 = xlrd.open_workbook(r"C:\Demo\API\API_Cases.xlsx")

  workbook2 = xlwt.Workbook(encoding='utf-8')

  sheet1 = workbook1.sheet_by_index(0)

  sheet2 = workbook2.add_sheet("response")

讀取內容之後,我們對需要引數化的部分進行修改,一般情況下,url的前半部分為不變,所以我們只需要把excel中第二列取出來拼接成url即可,body部分也如是,如果有固定部分的body,我們可以在python中直接定義,然後與excel中的內容進行拼接:

par_url = sheet1.col_values(1)

  body = sheet1.col_values(2)

當然,拼接的程式碼需要寫在迴圈裡面:

  request_url = ' + par_url[i]

  print(request_url)

執行的時候,我們用到的是requests這個包,如果需求中既有GET,又有POST,又有PUT,還有DELETE,由於用到的引數不同,我們可以分別處理。對於不同請求需要用到的不同的header,我們也可以在迴圈裡對其進行定義,如果區別很大,我們也可以在excel中單獨定義一列,然後在程式碼中加入相應的讀取語句即可。對於POST型別的請求,我們需要以下幾個引數:

  response = requests.post(url=request_url, headers={}, data=body[i])

  print(body[i])

在執行完之後,如果直接寫入excel,我們開啟response檔案之後會發現,所有的返回內容都變成了一行,非常不便於分析。所以我們需要先對返回的資料進行處理,再寫入excel。如果返回的內容中包含中文,則必須加上ensure_ascii=False, 否則就會出現編碼問題。

json_dic = json.dumps(json.loads(response.content), indent=4, ensure_ascii=False)

最後,我們把整理好的輸出內容寫入新建的excel文件並儲存,就大功告成了。

  sheet2.write(i, 0, json_dic)

  workbook2.save(r"C:\Demo\API\response.xls")

其中遇到了一些問題,也在這裡提示一下,比如在POST請求中,有些引數是隨機數,導致每次傳送請求的時候都需要手動修改,否則就會報“已存在”之類的錯,這時候我們需要用到random這個包。我們以生成10位隨機數為例,在程式碼中用生成的10位隨機數替換掉body中{{random}}的內容:

  random_num = str(math.floor(1e10 * random.random()))

  response = requests.post(url=request_url, headers={}, data=body[i].replace('{{random}}', random_num))

執行結果如圖:

Excel+Python十分鐘跑完批次API,就是這麼簡單粗暴又好用

生成的新檔案:

Excel+Python十分鐘跑完批次API,就是這麼簡單粗暴又好用

開啟這個response.xls,可以看到50個API已經跑完了。點進A1可以看到response的具體內容:

Excel+Python十分鐘跑完批次API,就是這麼簡單粗暴又好用

加我VX:17324089390  回覆關鍵詞“測試”領取限量軟體測試學習資料哦~~

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2671315/,如需轉載,請註明出處,否則將追究法律責任。

相關文章