1. 程式人生 > 其它 >4.httprunner-引數化和資料驅動

4.httprunner-引數化和資料驅動

前言
  • 引數化在config中使用parameters關鍵字
  • httprunner2.x 是在testsuite中實現引數化
  • httprunner3.x 是在testcase中的config實現引數化
  什麼場景適合引數化   舉例:
  • 測試搜尋功能,只有一個輸入框,但是有十種不同的搜尋關鍵字
  • 測試賬號登入功能,需要輸入賬號密碼,然後按照等價類劃分後有20種組合情況
  引數基本分為兩種
  • 單個獨立引數:舉例的第一個場景,只需要變化搜尋關鍵字這一個引數
  • 多個具有關聯性的引數:舉例的第二個場景,需要變化賬號密碼兩個引數,並且兩個引數關聯組合
  實現場景
  • 對於引數而言,我們可能具有一個引數列表,執行時按照不同的規則去取值
  • 例如順序取值、隨機取值、迴圈取值等
  • 這就是典型的引數化和資料驅動
  單引數化實現
  • 假設我們用4個賬號登入,密碼都是123456
  • 我們通過parameters設定key為user,value為4個賬號的列表
  • 那麼執行的時候,user依次迴圈取列表的值,供下方引用變數請求
  • 列表有多少個引數,介面就會對應執行請求多少次,會有多少個用例
  • 設定引數化的value必須是list
config:
  name: 登入用例
  base_url: ${ENV(base_url)}
  # 設定變數
  variables:
    password: 123456
 #設定引數化
  parameters:
    user:[test1,test2,test3,test4]
teststeps:
- name: step-登入 request: url: /v1/login/ method: POST params: user: $user #引用引數化命令 password: $password
多個引數一一對應引數化
  • 場景:我們需要每個賬號對應一個單獨的密碼來實現場景
  • 我們繼續parameters設定引數化,而多個不同的引數,我們用-隔開
  • 每個賬號對應一個單獨的密碼,我們需要兩個引數,user和password
  • 這兩個引數,我們用-隔開定義兩個key,然後一一對應下面的引數
  • 執行的時候,兩個key依次迴圈取對應值供下方引用
config:
  name: 登入用例
  base_url: ${ENV(base_url)}
  parameters:
    # 設定user和password兩個key,用-隔開
    # 每次按順序迴圈取對應的值
    user-password:
      -[test1,123456]
      -[test2,654321]
     -[test3,987544]
     -[test4,678910]

teststeps:
-
  name: step-登入
  request:
    url: /v1/login/
    method: POST
    params:
      user: $user
      password: $password
笛卡爾積組合引數
  • 比如測試賬號有4種,[test1,test2,test3,test4]
  • 密碼也有4種,[123456,654321,56789,98765]
  • 用笛卡爾積組合的話,就是4*4=16種組合用例
  • 我們可以在parameters下單獨設定兩個key,user和password
  • 將使用者名稱和密碼進行全組合,即每個使用者名稱的取值都與每個密碼的取值成對進行組合應
    config:
      name: 登入用例
      base_url: ${ENV(base_url)}
      parameters:
        user: [test1,test2,test3,test4]
        password: [123456,654321,56789,98765]
    
    teststeps:
    -
      name: step-登入
      request:
        url: /v1/login/
        method: POST
        params:
          user: $user
          password: $password