1. 程式人生 > 實用技巧 >HttpRunner介面自動化測試框架

HttpRunner介面自動化測試框架

HttpRunner介面自動化測試框架

簡介

2018年python開發者大會上,瞭解到HttpRuuner開源自動化測試框架,採用YAML/JSON格式管理用例,能錄製和轉換生成用例功能,充分做到用例與測試程式碼分離,相比excel維護測試場景資料更加簡潔。在此,利用業餘時間研究這個框架去實現介面自動化測試。

HttpRunner 是一款面向 HTTP(S) 協議的通用開源測試框架,只需編寫維護一份YAML/JSON指令碼,即可實現自動化測試、效能測試、線上監控、持續整合等多種測試需求。

主流介面自動化工具框架:

從上圖可知,技術選型一般會優先考慮Requests+Python和HttpRunner,Requests+Python在自動化測試總結分類裡面有文章講過,這裡我們針對HttpRunner進行探索。

框架流程

主要特性:

  • 繼承Requests的全部特性,輕鬆實現 HTTP(S) 的各種測試需求
  • 採用YAML/JSON的形式描述測試場景,保障測試用例描述的統一性和可維護性
  • 藉助輔助函式(debugtalk.py),在測試指令碼中輕鬆實現複雜的動態計算邏輯
  • 支援完善的測試用例分層機制,充分實現測試用例的複用
  • 測試前後支援完善的 hook 機制
  • 響應結果支援豐富的校驗機制
  • 基於 HAR 實現介面錄製和用例生成功能(har2case
  • 結合Locust框架,無需額外的工作即可實現分散式效能測試
  • 執行方式採用 CLI 呼叫,可與 Jenkins 等持續整合工具完美結合
  • 測試結果統計報告簡潔清晰,附帶詳盡統計資訊和日誌記錄
  • 極強的可擴充套件性,輕鬆實現二次開發和 Web 平臺化

環境安裝:

HttpRunner 是一個基於 Python 開發的測試框架,可以執行在 macOS、Linux、Windows 系統平臺上。HttpRunner 支援 Python 3.4 及以上的所有版本,推薦建議使用 Python 3.4 及以上版本。

使用pip命令安裝:pip3 install httprunner 【因本人環境裝有python兩個版本,這裡使用是python3.6版本,就使用pip3命令,如是python2.7版本的話,就用pip命令安裝】

安裝完成後校驗:


如版本號正常顯示,則說明安裝正常。

基礎功能

  1、 錄製生成用例

在轉換生成測試用例之前,需要先將抓取得到的資料包匯出為 HAR 格式的檔案。使用Charles抓包工具 Proxy中的操作方式為,選中需要轉換的介面(可多選或全選),點選右鍵,在懸浮的選單目錄中點選【Export...】,格式選擇HTTP Archive(.har)後儲存即可;假設我們儲存的檔名稱為test.har

轉換測試用例

在命令列終端中執行 har2case 命令,即可將 test.har 轉換為 HttpRunner 的測試用例檔案。 使用har2case轉換指令碼時預設轉換為 JSON 格式

加上-2y/--to-yml引數後轉換為 YAML 格式

兩種格式完全等價,YAML 格式更簡潔,JSON 格式支援的工具更豐富,大家可根據個人喜好進行選擇。

生成後的用例如下圖所示:

json格式:

YAML格式:

  • config:作為整個測試用例集的全域性配置項
  • test:對應單個測試用例
  • name這個test的名字
  • request這個test具體傳送http請求的各種資訊, 如下:
  • url請求的路徑 (若config中有定義base_url, 則完整路徑是用 base_url + url )
  • method請求方法 POST, GET等等
  • data 傳入引數值
  • validate完成請求後, 所要進行的驗證內容. 所有驗證內容均通過該test才算通過,否則失敗.

  2、執行測試

若希望測試用例在執行過程中,遇到失敗時不再繼續執行後續用例,則可通過在命令中新增--failfast實現。如:hrun test.yaml --failfast

若需要檢視到更詳盡的資訊,例如請求的引數和響應的詳細內容,可以將日誌級別設定為DEBUG,即在命令中新增--log-level debug。如:hrun test.yaml --log-level debug

為了方便定位問題,執行測試時可指定--save-tests引數,即可將執行過程的中間資料儲存為日誌檔案。

日誌檔案將儲存在專案根目錄的logs資料夾中,生成的檔案有如下三個(XXX為測試用例名稱):

  • XXX.loaded.json:測試用例載入後的資料結構內容,載入包括測試用例檔案(YAML/JSON)、debugtalk.py、.env 等所有專案檔案,例如test-quickstart-6.loaded.json
  • XXX.parsed.json:測試用例解析後的資料結構內容,解析內容包括測試用例引用(API/testcase)、變數計算和替換、base_url 拼接等,例如test-quickstart-6.parsed.json
  • XXX.summary.json:測試報告生成前的資料結構內容,例如test-quickstart-6.summary.json

  3、測試報告

預設情況下,生成的測試報告檔案會位於專案根目錄的 reports 資料夾中,檔名稱為測試開始的時間戳。HttpRunner 中自帶了一個 Jinja2 格式的預設報告模版

測試報告形式如下:

在 Summary 中,會羅列本次測試的整體資訊,包括測試開始時間、總執行時長、執行的Python版本和系統環境、執行結果統計資料。

在 Details 中,會詳細展示每一條測試用例的執行結果。

點選測試用例對應的 log 按鈕,會在彈出框中展示該用例執行的詳細資料,包括請求的 headers 和 body、響應的 headers 和 body、校驗結果、響應、響應耗時(elapsed)等資訊。

預設情況下,生成的測試報告檔案會位於專案根目錄的 reports 資料夾中。如需指定生成報告的路徑,可以使用--report-dir引數。

如: hrun test.yaml --dirreport-name g:\home

其它高階特性如資料引數化、用例分層、環境變數等用法請參考官網中文手冊詳細介紹。

  4、建立專案

使用方式也與Django類似,只需要通過--startproject指定新專案的名稱即可。如:hrun --startproject httpapidemo

執行後,就會在指定的目錄中生成新專案的目錄結構,接下來,我們就可以按照測試用例的介面-模組-場景分層原則往裡面新增用例描述資訊了。

需要注意的是,我們在組織測試用例描述的檔案目錄結構時,遵循約定大於配置的原則:

  • API介面定義必須放置在api目錄下
  • 模組定義必須放置在suite目錄下
  • 測試場景檔案必須放置在testcases目錄下
  • 相關的函式定義放置在debugtalk.py

具體新增用例目錄結構例子如下: