config相應參數
關鍵詞 | 是否必須 | 數據類型 | 描述 |
name | YES | string | 測試用例的名稱,在測試報告中將作為標題 |
variables | NO | list of dict | 定義全局變量,作用域為整個用例 |
parameters | NO | list of dict | 全局參數,用於實現數據化驅動,作為域為整個用例 |
request | NO | dict | request的公共參數,作用域為整個用例;常用參數包括base_url和headers |
關鍵詞 | 是否必須 | 數據類型 | 描述 |
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"]
常用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]
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"}
校驗器 | 意義 | 可以使用的名稱 |
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']