httprunner框架使用


1、測試用例結構:

(1)一個JSON/YAML文件對應一個測試用例

(2)每個測試用例為一個list of dict結構,其中可能包含全局配置項(config)和若干個測試步驟(test)

(3)config 為全局配置項,作用域為整個測試用例

(4)test 對應單個測試步驟,作用域僅限於本身

2、在測試步驟中提取參數用extract,參數引用用$var

在測試步驟(test)中,若需要從響應結果中提取參數,則可使用 extract 關鍵字。extract 的列表中可指定一個或多個需要提取的參數。

在提取參數時,當 HTTP 的請求響應結果為 JSON 格式,則可以采用.運算符的方式,逐級往下獲取到參數值;響應結果的整體內容引用方式為 content 或者 body

在測試用例中傳遞參數用exctract關鍵字,只能從前往后傳遞

3、變量申明(variables)跟引用($var)。config跟test中均可以用variables定義變量,用$+變量名稱引用,其中config為全局變量,test中為本用例變量

4、httprunner支持熱加載的插件機制debugtalk.py,在測試用例文件的同級或上級目錄中創建debugtalk.py,在其中定義相關變量跟函數,

創建完成后,引用函數的方式為${func($var)}

5、httprunner的主要文件格式:

(1)YAML/JSONL:測試用例文件,存儲接口測試相關信息

(2)debugtalk.py:存儲相關函數

  • 該文件存在時,將作為項目根目錄定位標記,其所在目錄即被視為項目工程根目錄
  • 該文件不存在時,運行測試的所在路徑(CWD)將被視為項目工程根目錄
  • 測試用例文件中的相對路徑(例如.csv)均需基於項目工程根目錄
  • 運行測試后,測試報告文件夾(reports)會生成在項目工程根目

(3).env(可選):存儲項目環境變量,通常用於存儲項目敏感信息

(4).csv(可選):項目數據文件,用於進行數據驅動

(5)reports:默認生成測試報告的存儲文件夾

6、測試用例結構:

 

 

#對應的json結構,test對應單個測試步驟(teststep)
[
  {
    "config": {...}
  },
  {
    "test": {...}
  },
  {
    "test": {...}
  }
]

7、extract:

(1)響應結果為json:采用 . 運算符

(2)響應結果為text/html :采用正則表達式

8、validate:結果的校驗項,支持兩種格式:

  • {"comparator_name": [check_item, expect_value]}
  • {"check": check_item, "comparator": comparator_name, "expect": expect_value}

9、谷歌定義的yaml格式的文件都必須在冒號后加空格

10、邏輯關系:

 

 (1)接口定義:API的描述應該盡量全面,方便API的獨立測試

API的組成:name、variables、request、base_url、validate 等,定義完成后用 hrun get_headers.yml對單個接口進行調試

name: get headers
base_url: http://httpbin.org
variables:
    expected_status_code: 200
request:
    url: /headers
    method: GET
validate:
    - eq: ["status_code", $expected_status_code]
    - eq: [content.headers.Host, "httpbin.org"]

(2)測試用例

①引用接口定義:在teststep步驟中選用API字段引用接口定義,引用方式為API文件的路徑

②引用測試用例:在teststep中使用testcase引用測試用例

(3)測試用例集:測試用例為無序的集合,不存在依賴關系,若存在,在測試用例中完成

參數化場景使用parameters完成,覆蓋variables 的參數,驅動測試用例的運行

11、httprunner推薦的文件結構

  • debugtalk.py 放置在項目根目錄下,假設為 PRJ_ROOT_DIR
  • .env 放置在項目根目錄下,路徑為 PRJ_ROOT_DIR/.env
  • 接口定義(API)放置在 PRJ_ROOT_DIR/api/ 目錄下
  • 測試用例(testcase)放置在 PRJ_ROOT_DIR/testcases/ 目錄下
  • 測試用例集(testsuite)文件必須放置在 PRJ_ROOT_DIR/testsuites/ 目錄下
  • data 文件夾:存儲參數化文件,或者項目依賴的文件,路徑為 PRJ_ROOT_DIR/data/
  • reports 文件夾:存儲 HTML 測試報告,生成路徑為 PRJ_ROOT_DIR/reports/

12、快速創建新項目

hrun --startproject demo

·13、參數機制在 測試用例集中實現

14、數據源的3種方式:

  • 在 YAML/JSON 中直接指定參數列表:該種方式最為簡單易用,適合參數列表比較小的情況
  • 通過內置的 parameterize(可簡寫為P)函數引用 CSV 文件:該種方式需要准備 CSV 數據文件,適合數據量比較大的情況
  • 調用 debugtalk.py 中自定義的函數生成參數列表:該種方式最為靈活,可通過自定義 Python 函數實現任意場景的數據驅動機制,當需要動態生成參數列表時也需要選擇該種方式
  • 實現方式
  • config:
        name: "demo"
    
    testcases:
        testcase1_name:
            testcase: /path/to/testcase1
            parameters:
                user_agent: ["iOS/10.1", "iOS/10.2", "iOS/10.3"]
                user_id: ${P(user_id.csv)}
                username-password: ${get_account(10)}

15、笛卡爾組合的結果數量為各個參數數量的乘積

16、HttpRunner 通過復用 Locust,可以在無需對 YAML/JSON 進行任何修改的情況下,直接運行性能測試。

17、參數化使用parameters,采用笛卡爾組合結果對variables中定義的參數進行覆蓋

 18、通過times重復執行用例

19、對參數的加解密處理在tearsdown_hoook中處理

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM