簡介
HttpRunner是一款面向 HTTP(S) 協議的通用測試框架,只需編寫維護一份 YAML/JSON 腳本,即可實現自動化測試、性能測試、線上監控、持續集成等多種測試需求。
框架流程
核心特性
- 繼承 Requests 的全部特性,輕松實現 HTTP(S) 的各種測試需求
- 測試用例與代碼分離,采用YAML/JSON的形式描述測試場景,保障測試用例具備可維護性
- 測試用例支持分層機制,充分實現測試用例的復用
- 測試用例支持參數化和數據驅動機制
- 使用 skip 機制實現對測試用例的分組執行控制
- 測試請求支持完善的 hook 機制
- 支持熱加載機制,在文本測試用例中輕松實現復雜的動態計算邏輯
- 基於 HAR 實現接口錄制和用例生成功能(har2case)
- 結合 Locust 框架,無需額外的工作即可實現分布式性能測試
- 執行方式采用 CLI 調用,可與 Jenkins 等持續集成工具完美結合
- 測試結果統計報告簡潔清晰,附帶詳盡統計信息和日志記錄
- 具有可擴展性,便於擴展實現 Web 平台化(HttpRunnerManager)
下載安裝
使用pip命令進行安裝
pip install httprunner
安裝后效驗是否安裝成功,可以使用如下命令進行效驗
hrun -V
1.4.2
har2case -V
0.1.8
若版本號正常顯示,則說明安裝正常。
入門使用
測試場景
- 測試接口:http://httpbin.org/get
- 接口類型:GET
用例設計
HttpRunner的測試用例支持兩種文件格式:YAML 和 JSON。這里以YAML為例。
# test_httpbin.yml
- config:
name: httpbin api test
request:
base_url: http://www.httpbin.org
- test:
name: get request
request:
url: /get
method: GET
validate:
- eq: [status_code,200]
- config:作為整個測試用例集的全局配置項
- test:對應單個測試用例
- name 這個test的名字
- request 這個test具體發送http請求的各種信息, 如下:
- url 請求的路徑 (若config中有定義base_url, 則完整路徑是用 base_url + url )
- method 請求方法 POST, GET等等
- validate 完成請求后, 所要進行的驗證內容. 所有驗證內容均通過該test才算通過,否則失敗
運行測試
使用hrun執行測試,如下所示:
C:\Users\Shuqing>hrun D:\api_test\HttpRunner_test\test_httpbin.yml
get request
INFO GET /get
INFO status_code: 200, response_time(ms): 1967.35 ms, response_length: 273 bytes
INFO start to validate.
.
----------------------------------------------------------------------
Ran 1 test in 1.976s
OK
INFO Start to render Html report ...
INFO Generated Html report: C:\Users\Shuqing\reports\1533092144.html
查看測試報告
打開html報告如下:
HttpRunnerManager
簡介
HttpRunnerManager是基於HttpRunner的接口自動化測試平台,該工具是對 HttpRunner的包裝和Web圖形化, 另外還增加了一些新概念(項目/模塊)用來組織用例。
如果對yaml語法格式不熟悉,以及對於httprunner命令不熟悉的可以使用該平台執行接口自動化測試。
項目地址:https://github.com/HttpRunner/HttpRunnerManager
核心特性
- 項目管理:新增項目、列表展示及相關操作,支持用例批量上傳(標准化的HttpRunner json和yaml用例腳本)
- 模塊管理:為項目新增模塊,用例和配置都歸屬於module,module和project支持同步和異步方式
- 用例管理:分為添加config與test子功能,config定義全部變量和request等相關信息 request可以為公共參數和請求頭,也可定義全部變量
- 場景管理:可以動態加載可引用的用例,跨項目、跨模快,依賴用例列表支持拖拽排序和刪除
- 運行方式:可單個test,單個module,單個project,也可選擇多個批量運行,支持自定義測試計划,運行時可以靈活選擇配置和環境,
- 分布執行:單個用例和批量執行結果會直接在前端展示,模塊和項目執行可選擇為同步或者異步方式,
- 環境管理:可添加運行環境,運行用例時可以一鍵切換環境
- 報告查看:所有異步執行的用例均可在線查看報告,可自主命名,為空默認時間戳保存,
- 定時任務:可設置定時任務,遵循crontab表達式,可在線開啟、關閉,完畢后支持郵件通知
- 持續集成:jenkins對接,開發中。。。
下載安裝
1.安裝mysql數據庫服務端(推薦5.7+),並設置為utf-8編碼,創建相應HttpRunnerManager數據庫,設置好相應用戶名、密碼,啟動mysql。
2.將HttpRunnerManager下載下來,解壓放在任意盤符位置,例如我放在D盤根目錄,並重命名為HttpRunnerManager
環境配置
HttpRunnerManager支持分布式執行,模塊和項目執行可選擇為同步或者異步方式,因此需要安裝相關依賴工具。
erlang
Erlang是一種通用的面向並發的編程語言,它由瑞典電信設備制造商愛立信所轄的CS-Lab開發,目的是創造一種可以應對大規模並發活動的編程語言和運行環境。
下載地址:http://www.erlang.org/downloads
Rabbitmq
RabbitMQ 是一個由 Erlang 語言開發的 AMQP(高級消息隊列協議)的開源實現。它支持多個消息傳遞協議。RabbitMQ可以部署在分布式和聯合配置中,以滿足高規模、高可用性的需求,另外安裝rabbitmq需要先安裝erlang。
下載地址:http://www.rabbitmq.com/download.html 下載后雙擊rabbitmq-server-3.7.7.exe文件進行安裝。
安裝完成后如下圖如所示,選中RabbitMQ Service -start 然后以管理員身份運行。
可以通過訪問 http://localhost:15672 進行測試,默認的登陸賬號為:guest,密碼為:guest。