已退 (失) 休 (業),公開個人寫的 HTTP 介面自動化方案 (pytest+requests+allure+jsonschema),非常適合小白

大桥發表於2024-04-26

寫在前面

本人 40+ ,在帝都幹了差不多 20 年的軟體測試相關工作,基本上都算大廠或二線大廠吧,主要涉及反病毒主動防禦等安全類客戶端,Android 客戶端,SaaS 系統等,去年起開始賦閒。前幾天給一個朋友的團隊做 HTTP 介面自動化分享,於是翻出了之前寫的框架,略微整理下,主要是去掉了老東家用的 slack 告警,email 檢查等,並完善了部分 README 內容,現在公開此方案,希望對有些朋友能有所幫助。
另外,大家使用中如果有什麼問題和要求,可在此跟帖,或直接在 github 提 Issues,我抽空可能會回覆哈。此外還寫了個基於 playwright 的 web 自動化測試框架,過些天整理後也可能會公開分享。
API 自動化專案地址: https://github.com/wangdaqiao/Http_API_Auto

Python 3 實現 Http API 自動化 (pytest + requests + Allure)


主要思路和步驟

  1. 藉助 Mitmproxy 來抓取產品使用中的 http api 介面資料
  2. 執行指令碼 generate_newcases_from_api_record.py 處理上一步抓取到的介面資料,可生成新 api 的測試資料。
  3. 根據需要設定 api 的測試資料,補充到框架中。如完善 status code, 指定執行環境和優先順序,提取引數變數,完善 jsonschema 校驗等,通常僅需處理引數提取邏輯。
  4. 執行測試。

實現功能

  • 透過 requests session 會話,一次登入,免除 cookie 關聯處理
  • 測試資料驅動,csv 方便版本比較,補充完善用例
  • 自動生成測試用例(含斷言),小白也很好用
  • 支援介面間傳參
  • 支援多程序,加速測試執行過程
  • 支援多使用者
  • 支援多環境切換,僅需改動一處
  • 斷言:除了 status code,還支援 json schema 斷言
  • 漂亮的 Allure 報告,可檢視每個介面的請求和響應資料,以及斷言,方便排查
  • Slack 告警(老東家用的,這裡已去除)
  • ......

整體結構

。。。。。。

用法

  1. 安裝 Python 3.7+
  2. 下載程式碼。
  3. 在當前資料夾中,執行 pip install -r requirement.txt 安裝依賴包
  4. 透過“allure2”安裝 allure 2.1.38+
  5. 參考 “config” 子資料夾中的config_sample.yaml生成config.yaml檔案,並進行配置。
  6. 如果是想體驗下效果,可先進入 flask demo 目錄,執行 python app.py 命令在本地啟動一個 http 測試服務端,否則請忽略。
  7. 執行 python3 run_api_cases.py,完成後預設會自動開啟測試報告網頁。 另外,可以在第一個引數中指定執行環境,例如 python3 run_api_cases.py prod

補充:報告會有每個介面的 url,請求方法,payload,狀態碼,返回資料,如果失敗,會註明失敗原因,如狀態碼不符合預期,或返回的資料哪裡與預期不符,不妨看看這個失敗 case 的截圖吧

相關文章