天天看點

httprunner踩坑之路

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方式參數化貌似有問題,找不到參數 。