Excel+Python十分鐘跑完批次API,就是這麼簡單粗暴又好用
現在API測試被越來越多的公司重視,對於測試工程師來說每次收到需求之後首先要做的是研究需求文件。既然介面是兩個獨立系統之間同步資料或訪問對方程式的途徑,我們也就是要先看看這些介面到底是連線了哪兩個系統,它們之間的關係到底是怎樣的。所以一般需求文件裡會包括介面名稱,介面描述,介面型別,介面地址,推送引數,返回引數這幾項內容。熟悉Postman的同學可以發現這些都是必需的部分:
有了這幾項內容之後,我們需要把需求文件轉換成Excel,這樣不管是做案例管理,還是對比結果,都相對容易一些。而後期Python讀取和寫入也更方便。在Excel中,我們只寫入變化的部分,而對於相對固定的,例如server資訊則直接在Python程式碼中引數化。所以做出來的輸入文件如下:
有了這些內容,我們還是使用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))
執行結果如圖:
生成的新檔案:
開啟這個response.xls,可以看到50個API已經跑完了。點進A1可以看到response的具體內容:
加我VX:17324089390 回覆關鍵詞“測試”領取限量軟體測試學習資料哦~~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2671315/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- jdbc就是這麼簡單JDBC
- WebService就是這麼簡單Web
- WebSocket就是這麼簡單Web
- jwt 就是這麼簡單JWT
- Activiti就是這麼簡單
- promise原理就是這麼簡單Promise
- ThreadLocal就是這麼簡單thread
- 建造者模式就是這麼簡單模式
- SpringBoot就是這麼簡單Spring Boot
- 簡單的Python爬蟲 就是這麼簡單Python爬蟲
- 簡單又好用的高效工具
- Mybatis【配置檔案】就是這麼簡單MyBatis
- 包裝模式就是這麼簡單啦模式
- 搞定JVM垃圾回收就是這麼簡單JVM
- 二叉樹就是這麼簡單二叉樹
- Spring AOP就是這麼簡單啦Spring
- Spring【AOP模組】就是這麼簡單Spring
- Spring【DAO模組】就是這麼簡單Spring
- HashMap就是這麼簡單【原始碼剖析】HashMap原始碼
- linux sed命令就是這麼簡單Linux
- Java多執行緒就是這麼簡單Java執行緒
- Spring【依賴注入】就是這麼簡單Spring依賴注入
- LinkedHashMap,原始碼解讀就是這麼簡單HashMap原始碼
- 爬蟲,其實本就是這麼簡單爬蟲
- kotlin代理模式就是這麼簡單(委託)Kotlin模式
- 多執行緒之死鎖就是這麼簡單執行緒
- [Android]今日頭條的螢幕適配方案,簡單又粗暴!Android
- 網頁適配 iPhoneX,就是這麼簡單網頁iPhone
- ColorOS手機搬家功能這麼用 簡單又快捷ROS
- 回憶一次時鐘問題的解決(簡單粗暴)
- Flutter多平臺適配機制就是這麼簡單Flutter
- 簡單粗暴的 Caddy ServerServer
- 十分鐘搭建主流框架:簡單的網路部分框架
- 創業公司十分鐘簡單搭建GIT私有庫創業Git
- 不就是個簡訊登入API嘛,有這麼複雜嗎?API
- 設計遊戲就是這麼簡單(一):最重要的兩點遊戲
- 深入理解JVM——(二)搞定JVM垃圾回收就是這麼簡單JVM
- Proxy:簡單小巧又強大好用的代理系統