httprunner踩坑
1、get接口參數使用params傳入,例如:
name: get_stroy_content
base_url: http://xxx.xxx.xx.xx:xxxx
variables:
expected_status_code: 200
expected_msg: "request successfully"
request:
url: /favorite/getStoryContent
method: GET
params:
id: 15634
startDate: "2018-01-01"
endDate: "2019-09-01"
keyword: ""
start: 1
step: 10
headers:
Content-Type: "application/json"
validate:
- eq: ["status_code", $expected_status_code]
- eq: ["content.msg",$expected_msg]
2、post參數使用json傳入,例如:
name: update_favorite
base_url: http://xxx.xxx.xx.xx:xxxx
variables:
expected_status_code: 200
expected_msg: "request successfully"
request:
url: /favorite/updateFavorite
method: POST
json:
id: 15633
name: "看見"
headers:
Content-Type: "application/json"
validate:
- eq: ["status_code", $expected_status_code]
- eq: ["content.msg",$expected_msg]
3、運作api檔案下所有的接口描述
- 運作單個yml檔案 hrun + test1.yml
- 運作是所有yml檔案 hrun + api(yml檔案的上層目錄,這是相對路徑)
- 運作testcases下單個yml檔案 hrun + testcases\testcase2.yml
- 運作testcases下所有的yml檔案 hrun + testcases (yml檔案的上層目錄,這是相對路徑)
4、testcase中前後關聯的接口用例,參數的調用(後一個接口需要前一個接口的傳回值作為參數)
- 執行個體testcase_save_favorite.yml:
config:
name: "save/update favorite testcase"
variables:
expected_stauts_code: 200
base_url: http://xxx.xxx.xx.xx:xxxx
verify: False
output:
- favoriteId
teststeps:
-
name: check add favorite(*儲存收藏夾)
api: api/add_save_favorite.yml
extract:
- favoriteId: content.data.favoriteId
-
name: remove favorite(清除儲存的收藏夾)
api: api/remove_favorite.yml
variables:
id: ${switch_int($favoriteId)}
- api–> remove_favorite.yml
name: remove_favorite
base_url: http://xxx.xxx.xx.xx:xxxx
variables:
expected_status_code: 200
expected_msg: "request successfully.删除成功"
id: 15798
request:
url: /favorite/removeFavorite
method: POST
json:
id: $id
headers:
Content-Type: "application/json"
validate:
- eq: ["status_code", $expected_status_code]
- eq: ["content.msg",$expected_msg]
注意:extract用于提取接口傳回值中的參數,variables用于替換api中的參數(其中api中的json或params的參數需要用variables聲明在config中才能被替換),testcase_save_favorite.yml檔案variables的id(key)與remove_favorite.yml檔案variables的id(key)需要一緻。
5、對于api(接口定義)、testcase、testsuites的了解
- api(接口定義)單個用例httprunner的最下單元,可以包含一個接口的url、params、method等,可以單獨運作
- testcase 多個用例組合、複雜場景、需要steup_hooks or tesrdown_hooks的用例,可以引用api進行拼裝組合
- testsuites 用例集合概念(友善大量用例執行),可以引用testcase,參數化概念(2.0後僅能通過testsuites進行參數化)
- 注意:teststep僅是testcase中的步驟而已@TOC
另外httprunner的csv方式參數化貌似有問題,找不到參數 。