天天看點

httprunner架構曆程介紹(二)

四.接口測試外的其他功能

四.har2case

作用:将har檔案轉化成yml或者json檔案,具體使用方法可以看下har2case -h的羅列

指定目标檔案會生成yml檔案

har2case tests/data/demo.har demo.yml

不指定目标會生成json檔案

har2case tests/data/demo.har

參考:

https://debugtalk.com/post/HttpRunner-supports-HAR/

五.測試結果校驗器(validator)

在自動化測試執行的時候,會在發起HTTP請求、解析結果響應之後,逐個檢查各個校驗項,若存在任意校驗項不通過的情況,則該test将終止并被标記為失敗。

舉例說明:

- test:
    name: get token
    request:
        url: http://127.0.0.1:5000/api/get-token
        method: GET
    extract:
        - token: content.token
    validate:
        - {"check": "status_code", "comparator": "eq", "expect": 200}
        - {"check": "content.token", "comparator": "len_eq", "expect": 16}
           
每一個test可以指定0個或多個校驗項,放置在validate中。每一個校驗項均為一個json結構。裡面包含check(要檢查的字段)、comparator(字段對應着比較方式,若不指定則預設采用eq即檢查字段與預期值相等)、expect(檢查字段預期的值)

優化:

實作的功能:

新增支援自定義結果校驗器

結果校驗器中實作變量引用

結果校驗内容新增支援正規表達式提取

check和expect均可以實作變量的引用,check還新增了采用正規表達式提取内容的方式comparator可以實作自定義方法的調用

為了實作盡可能強大的檢查功能,check屬性值可通過鍊式操作精确指定具體的字段,comparator也内置實作了大量的檢查功能。

約定大于配置思想在架構中實作自定義結果校驗器的機制,使用者在有需要的時候,可以自己編寫校驗函數,然後在valiadate中引用校驗函數

參考:

https://debugtalk.com/post/HttpRunner-validator-optimization/

六…HttpRunner通過skip機制實作對測試用例的分組執行控制(借鑒unittest)

https://debugtalk.com/post/HttpRunner-skip-feature/

七.參數化資料驅動( LoadRunner)

- config:
    name: "demo"
    parameters:  # 參數
        - user_agent: ["iOS/10.1", "iOS/10.2", "iOS/10.3"]
        - user_id: ${P(user_id.csv)}  #P是一個内置函數parameterize ,用來解析csv檔案
        - username-password: ${get_account(10)}  #通過調用函數動态擷取參數
           

八.hook機制(hook 函數定義在debugtalk.py檔案中)

針對自動化測試用例,要在單個測試用例和整個測試用例集的前後實作hook

在 HttpRunner 中,負責測試執行的類為 httprunner/runner.py 中的 Runner。是以,要實作用例集層面的 hook 機制,隻需要将用例集的 setup_hooks 放置到 init 中,将 teardown_hooks 放置到 del 中。

類似地,要實作單個用例層面的 hook 機制,隻需要将單個用例的 setup_hooks 放置到 request 之前,将 teardown_hooks 放置到 request 之後。