溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發(fā)布時間:2020-08-06 16:10:20 來源:ITPUB博客 閱讀:179 作者:博為峰網(wǎng)校 欄目:網(wǎng)絡管理


現(xiàn)在API測試被越來越多的公司重視,對于測試工程師來說每次收到需求之后首先要做的是研究需求文檔。既然接口是兩個獨立系統(tǒng)之間同步數(shù)據(jù)或訪問對方程序的途徑,我們也就是要先看看這些接口到底是連接了哪兩個系統(tǒng),它們之間的關(guān)系到底是怎樣的。所以一般需求文檔里會包括接口名稱,接口描述,接口類型,接口地址,推送參數(shù),返回參數(shù)這幾項內(nèi)容。熟悉Postman的同學可以發(fā)現(xiàn)這些都是必需的部分:

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

有了這幾項內(nèi)容之后,我們需要把需求文檔轉(zhuǎn)換成Excel,這樣不管是做案例管理,還是對比結(jié)果,都相對容易一些。而后期Python讀取和寫入也更方便。在Excel中,我們只寫入變化的部分,而對于相對固定的,例如server信息則直接在Python代碼中參數(shù)化。所以做出來的輸入文檔如下:

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

有了這些內(nèi)容,我們還是使用xlrd和xlwt包對excel進行處理,對于如何使用xlrd和xlwt就不在本文做過多解釋了。為什么要新建一個workbook2?因為在跑完一遍之后,如果我們發(fā)現(xiàn)有些接口跑出來的結(jié)果有問題,我們可以不用關(guān)閉workbook1,直接進行修改,然后rerun,就會生成新的workbook2,覆蓋之前的結(jié)果,節(jié)省打開關(guān)閉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")

讀取內(nèi)容之后,我們對需要參數(shù)化的部分進行修改,一般情況下,url的前半部分為http://xx.xx.xx.xx:8080不變,所以我們只需要把excel中第二列取出來拼接成url即可,body部分也如是,如果有固定部分的body,我們可以在python中直接定義,然后與excel中的內(nèi)容進行拼接:

par_url = sheet1.col_values(1)

  body = sheet1.col_values(2)

當然,拼接的代碼需要寫在循環(huán)里面:

  request_url = 'https://postman-echo.com' + par_url[i]

  print(request_url)

執(zhí)行的時候,我們用到的是requests這個包,如果需求中既有GET,又有POST,又有PUT,還有DELETE,由于用到的參數(shù)不同,我們可以分別處理。對于不同請求需要用到的不同的header,我們也可以在循環(huán)里對其進行定義,如果區(qū)別很大,我們也可以在excel中單獨定義一列,然后在代碼中加入相應的讀取語句即可。對于POST類型的請求,我們需要以下幾個參數(shù):

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

  print(body[i])

在執(zhí)行完之后,如果直接寫入excel,我們打開response文件之后會發(fā)現(xiàn),所有的返回內(nèi)容都變成了一行,非常不便于分析。所以我們需要先對返回的數(shù)據(jù)進行處理,再寫入excel。如果返回的內(nèi)容中包含中文,則必須加上ensure_ascii=False, 否則就會出現(xiàn)編碼問題。

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

最后,我們把整理好的輸出內(nèi)容寫入新建的excel文檔并保存,就大功告成了。

  sheet2.write(i, 0, json_dic)

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

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

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

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

運行結(jié)果如圖:

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

生成的新文件:

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

打開這個response.xls,可以看到50個API已經(jīng)跑完了。點進A1可以看到response的具體內(nèi)容:

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

加我VX:17324089390  回復關(guān)鍵詞“測試”領(lǐng)取限量軟件測試學習資料哦~~

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI