web接口測試實踐回顧
前段時間系統學習了測試專家蟲師的《Web接口開發與自動化測試--基於Python語言》,自己也模仿完成了項目,收獲頗豐。由於服務端沒有錯誤日誌輸出,在定位錯誤、接口調試過程中,postman和fiddler起到了很大的作用。過去單獨學習這兩個工具,並沒有感覺到它們的強大,果然,在項目實戰中學習更有效率!
在已有項目的基礎上,又對所有接口進行了優化,增加了10個接口:實現了http basic認證版本的接口和md5摘要認證版本的接口。另外,實現了自動發送測試報告郵件的功能。
接口測試還有一些常見的場景,例如獲取cookie自動登錄,對https接口處理,使用mock模擬等,這次項目暫時沒有涉及到,未來完善。
回顧如下:
github地址:https://github.com/yulifromchina/InterfaceTest
一、項目成果展示
二、項目所用技術
開發平臺:windows 10 x64 + pycharm + python3.6 + mysql 5.7.21
簽到系統:django 2.0.1 + django-bootstrap3-9.1.0
測試框架:requests 2.18.4
三、項目具體介紹
1、發布會簽到系統
發布會簽到系統的功能包括:登錄、發布會管理、嘉賓管理、簽到功能
大致邏輯為:用戶登錄時向服務器發起Post請求,通過django的auth模塊進行驗證,並把用戶信息存儲在服務器session中。在登錄的情況下,用戶可以瀏覽發布會,嘉賓列表,以及進入發布會管理頁面後簽到。如果沒有登錄,則無法訪問這些頁面(通過django的login_required裝飾器實現)。用戶輸入手機號簽到,後臺將手機號和發布會作為聯合主鍵到後臺數據庫驗證,並進行是否已簽到、發布會是否已經結束等判斷,最後返回簽到結果。
以上邏輯均通過不同的路由以及回調函數進行響應,回調函數將數據從數據庫取出,經模板渲染後返回給瀏覽器顯示。
提供的接口如下:
2、測試框架
測試框架的結構如下:
對接口進行請求,使用了requests庫;
case的組織,使用了unittest測試框架;
測試報告,使用了HTMLTestRunner生成;
測試數據,使用了MySQL數據庫存儲;
郵件發送,使用了smtplib和email庫。
每個接口包括若幹個用例,每個接口的測試由一個py文件負責:
四、項目總結
接口測試有一些專業的平臺提供服務,例如三劍客接口測試平臺,是使用現場的平臺還是自己開發測試框架,或者二次開發,取決於項目的具體情況,沒有絕對的好壞。通過實際完成接口,並對接口進行編寫,加深了認識,相信能夠更好的使用工具。使用django開發項目,快速且結構清晰。
項目中存在一個bug沒有解決。在run_test.py中,目前不能raw_*.py, http_*.py,md5_*.py三個版本的15個用例一起運行,只能分三批運行。因為這三個批次的接口,往數據庫中插入的是同一批數據,因此一起運行會造成數據汙染。嘗試在三次運行間進行了清空數據庫再重新插入數據的操作,但是這個插入操作會失敗。沒有定位到原因。如果有大牛解決過類似情況,望指教!多謝!
web接口測試實踐回顧