Httprunner學習

1、簡介html

HttpRunner 是一款面向 HTTP(S) 協議的通用測試框架,只需編寫維護一份YAML/JSON腳本,便可實現自動化測試、性能測試、線上監控、持續集成等多種測試需求。python

核心特性:git

  • 繼承 Requests 的所有特性,輕鬆實現 HTTP(S) 的各類測試需求
  • 測試用例與代碼分離,採用YAML/JSON的形式描述測試場景,保障測試用例具有可維護性
  • 測試用例支持分層機制,充分實現測試用例的複用
  • 測試用例支持參數化和數據驅動機制
  • 使用 skip 機制實現對測試用例的分組執行控制
  • 支持熱加載機制,在文本測試用例中輕鬆實現複雜的動態計算邏輯
  • 基於 HAR 實現接口錄製和用例生成功能(har2case
  • 結合 Locust 框架,無需額外的工做便可實現分佈式性能測試
  • 執行方式採用 CLI 調用,可與 Jenkins 等持續集成工具完美結合
  • 測試結果統計報告簡潔清晰,附帶詳盡統計信息和日誌記錄
  • 具備可擴展性,便於擴展實現 Web 平臺化(HttpRunnerManager

2、安裝github

1. 首次安裝:pip install httprunnerjson

2. 升級到最新:pip install -U HttpRunner
api

3、命令框架

  • hrun:核心命令 
  • locusts:基於Locust實現性能測試 
  • har2case:輔助工具,將har格式地文檔轉換爲yml/json格式的測試用例 

4、用例簡述分佈式

  • 測試用例集:單個測試用例或多個測試用例的集合,表現形式爲一個json文件
  • 測試用例:單次http請求和響應過程,表現形式爲json文件中的一個test
  • config:全局配置項,做用於整個測試用例集,一個測試用例集中只有一個config
  • test:做用於單個測試用例,包含單個請求、響應、校驗過程,做用域僅限於單個接口,一個測試用例集中能夠有多個test
  • 若是一個變量在config中定義了,在test中沒有定義,則test會繼承該變量
  • 若是一個變量在config和test中都定義了,則test會使用本身定義的變量值
  • 各個test的空間相互獨立,互不影響

5、結果校驗器工具

1. 結果校驗器功能:主要輔助測試人員執行測試用例時判斷系統的功能是否正常。對於每個test,能夠指定0個或多個校驗項,放置在validate中。在自動化測試執行的時候,會在發起HTTP請求、解析結果響應以後,逐個檢查各個校驗項,若存在任意校驗項不經過的狀況,則該test將終止並被標記爲失敗。性能

例:

- test: name: get token request: url: https://ape-api.yuanfudao.ws/win/login method: GET extract: - token: content.token validate: - {"check": "status_code", "comparator": "eq", "expect": 200} - {"check": "content.token", "comparator": "len_eq", "expect": 16}

2. 如上例所示,每個校驗項均爲一個json結構,裏面包含checkexpectcomparator三個屬性字段。其中,check對應着要檢查的字段,expect對應着檢查字段預期的值,這兩項是必須指定的;comparator字段對應着比較方法,若不指定,則默認採用eq,即檢查字段與預期值相等。

3. 其餘檢查方法:

HttpRunner除了eq,還內置了大量的檢查方法。例如,咱們能夠經過gtgeltle等比較數值大小,經過len_eqlen_gtlen_lt等比較長度是否相等(列表、字典、字符串均適用),經過containscontained_by來判斷包含關係,經過startswithendswith判斷字符串的開頭結尾,甚至經過regex_match來判斷是否知足正則匹配等。

詳細的比較方式還有許多,須要時可查看comparator表格。

6、運行

 1. Charles抓包,導出.har格式文件

 

2. 轉換格式:

har2case xxx.har xxx.json

3. 運行:

4. 查看報告:

 

5. 其餘:

  • 日誌級別:須要查看到更詳盡的信息,例如請求的參數和響應的詳細內容,能夠將日誌級別設置爲DEBUG,即在命令中添加--log-level debug。
  • failfast:若但願測試用例集在運行過程當中,遇到失敗時再也不繼續運行後續用例,則可經過在命令中添加--failfast實現。

  • 指定報告名稱:如需指定生成報告的名稱,能夠使用 --html-report-name 參數。(會在reports目錄下生成相應名稱的文件夾,裏面包含相同名稱的報告)
相關文章
相關標籤/搜索