HttpRunner關鍵詞、extract使用、validate斷言、關聯


config相應參數

關鍵詞 是否必須 數據類型 描述
name YES string 測試用例的名稱,在測試報告中將作為標題
variables NO list of dict 定義全局變量,作用域為整個用例
parameters NO list of dict 全局參數,用於實現數據化驅動,作為域為整個用例
request NO dict request的公共參數,作用域為整個用例;常用參數包括base_url和headers
request關鍵詞中的關鍵詞
關鍵詞 是否必須 數據類型 描述
base_url NO string 測試用例請求URL的公共host,指定該參數后,test的url可以只描述path部分
headers NO dict request 中 headers 的公共參數,作用域為整個用例
export NO list

整個用例輸出的參數列表,可輸出的參數包括公共的variable 和 extract 的參數; 

在 log-level 為 debug 模式下,會在 terminal 中打印出參數內容 

test相應參數

關鍵詞 是否必備 數據類型 描述
name YES string 測試步驟的名稱,在測試報告中將作為測試步驟的名稱
request NO dict HTTP請求的詳細內容
variables NO list of dict 測試步驟中定義的變量,作用域為當前測試步驟
extract NO list
從當前 HTTP 請求的響應結果中提取參數,並保存到參數變量中(例如
token),后續測試用例可通過$token的形式進行引用
validate NO list
測試用例中定義的結果校驗項,作用域為當前測試用例,用於實現對當前測
試用例運行結果的校驗
setup_hooks NO list 在 HTTP 請求發送前執行 hook 函數,主要用於准備工作
teardown_hooks NO list 在 HTTP 請求發送后執行 hook 函數,主要用於測試后的清理工作

extract:

# test中的extract參數應用
- config:
    name: "驗證能否打開主網頁"
    base_url: "http://www.hnxmxit.com"

# 測試步驟
- test:
    name: "open hnxmxit mainpage api"
    request:
      url: "/"
      method: GET
    extract:
      - code: "status_code"
      - reason: "reason"
    validate:
      - eq: [$code,200]
      - eq: [$reason,"OK"]
View Code

常用extract:status_code, cookies, elapsed, headers, content, text, json, encoding, ok, reason, url.

json數據如下圖extract獲取json數據:

# 模擬帶參數的GET請求
- config:
    name: 驗證能否獲取所有標簽
    base_url: https://api.weixin.qq.com

- test:
    name: get all user tag api
    request:
      url: /cgi-bin/tags/get
      method: GET
      params:
        access_token: "34__rUWIshsx9ftkwdwuRLjrztkqbDRS8WY4UlzWGF8Z7BOUn8Fyq1kejpUNBvZrOmgFYgLX4xsjDIOxMmLuSIW-f4gsgLJAId-K44kNu7rAzVjLR7ecnCIEGw374Hiy9KzgIGvWUWbyg5_nkXHSKOfAHAZRV"
    extract:
      - id: content.tags.3.id
    validate:
      - eq: ["status_code",200]
      - eq: [$id,102]
View Code

validate

斷言的兩種格式

# validate中兩種斷言方式
- config:
    name: "驗證能否打開主網頁"
    base_url: "http://www.hnxmxit.com"

# 測試步驟
- test:
    name: "open hnxmxit mainpage api"
    request:
      url: "/"
      method: GET
    extract:
      - code: "status_code"
      - reason: "reason"
      - time: elapsed.microseconds
      - len: headers.Content-Length
      - title: <title>(.+?)</title>
    validate:
      - eq: [$reason,"OK"]
      - {"check":$reason,"comparator":"str_eq","expect":"OK"}
View Code
校驗器 意義 可以使用的名稱
eq/equals 判斷實際結果和期望結果是否相等 "eq", "equals", "==", "is"
lt/less_than 判斷實際結果小於期望結果 "lt", "less_than"
le/less_than_or_equals 判斷實際結果小於等於期望結果 "le", "less_than_or_equals"
gt/greater_than 判斷實際結果大於期望結果 gt", "greater_than"
ge/greater_than_or_equals 判斷實際結果大於等於期望結果 "ge", "greater_than_or_equals"
ne/not_equals 判斷實際結果和期望結果不相等 "ne", "not_equals"
str_eq/string_equals 判斷轉字符串后對比,實際結果和期望結果是否相等 "str_eq", "string_equals"
len_eq/length_equals 判斷字符串或list長度 "len_eq", "length_equals", "count_eq"
len_gt/length_greater_than 判斷實際結果的長度大於和期望結果 "len_gt", "count_gt", "length_greater_than", "count_greater_than"
len_ge/length_greater_than_or_equals 實際結果的長度大於等於期望結果 "len_ge", "count_ge", "length_greater_than_or_equals", "count_greater_than_or_equals"
len_lt/length_less_than 實際結果的長度小於期望結果 "len_lt", "count_lt", "length_less_than", "count_less_than"
len_le/length_less_than_or_equals 實際結果的長度小於等於期望結果 "len_le", "count_le", "length_less_than_or_equals", "count_less_than_or_equals"
contains 實際結果包含期望結果 contains
contains_by 實際結果被期望結果包含 contains_by

 

request關鍵詞

  • headers:請求頭部信息
  • method:請求方式
  • url:請求地址
  • host:請求主機地址
  • params:GET請求參數
  • data:表單形式的參數
  • json:json格式的參數

httprunner關聯

1.使用extract截取下一個接口需要使用的值

2.在下一個接口需要關聯的傳輸數據的地方,寫$+變量名即可

- config:
    name: "獲取token -- 用戶管理~查看粉絲基本信息操作"
    base_url: "https://api.weixin.qq.com"

- test:
    name: "獲取token_value"
    request:
      url: "/cgi-bin/token"
      method: GET
      params:
        grant_type: "client_credential"
        appid: "wxec83eaada223a9c8"
        secret: "1867d7f1cabb3bafae0b7304e8251a09"
    extract:
      - tokenid: content.access_token
    validate:
      - eq: ["status_code",200]
      - eq: [content.expires_in, 7200]

- test:
    name: "設置粉絲備注"
    request:
      url: "/cgi-bin/user/info/updateremark"
      method: POST
      params:
       access_token: $tokenid
      json: {"openid":"od-53v0GMqGTEiPY-QC549RTXkCk","remark":"pangzi"}
    extract:
      - errmsg_value: json.errmsg
    validate:
      - eq: [$errmsg_value,'ok']
View Code


免責聲明!

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



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