HttpRunner學習7--引用CSV文件數據


前言

在之前的文章中,我們已經學習了 parameters 參數化,是在測試腳本中直接指定參數列表。這種方法簡單易用,但如果我們的參數列表數據比較多,這種方法可能就不太適合了。

當數據量比較大的時候,我們希望可以把測試數據寫到 CSV 文件中,然后直接引用 CSV 文件數據。

本人環境:HttpRunner V1.5.8

測試場景

登錄接口文檔說明:http://doc.nnzhp.cn/index.php?s=/6&page_id=12

我們繼續以之前的登錄接口來學習,如果直接在 YAML/JSON 腳本中指定參數列表內容,那么我們的用例可能就是這樣的:

- config:
    name: parameters test
    request:
      base_url: http://api.nnzhp.cn
    parameters:
      - username-passwd:
          - ["niuhanyang", "aA123456"]
          - ["test10101", "fasdfasfa"]
          - ["test1010", "aA123456"]

- test:
    name: login case
    request:
      url: /api/user/login
      method: POST
      headers:
        Content-Type: application/x-www-form-urlencoded
        User-Agent: Fiddler
      data:
        username: $username
        passwd: $passwd
    validate:
      - eq: [status_code, 200]
      - eq: [content.error_code, 0]

上面的用例,只有 3 組測試數據,當我們有10、100組測試數據,如果直接寫在測試腳本中,可能會很不方便。我們可以把這些測試數據都寫到CSV文件,然后直接引用CSV文件,這樣就方便多了,我們的腳本也顯得更加簡潔。

CSV中存放單個參數

對於 CSV 數據文件,需要遵循如下幾項約定的規則:

  • 文件需放置在與測試用例文件相同的目錄中;
  • CSV 文件中的第一行必須為參數名稱,從第二行開始為參數值,每個(組)值占一行;
  • 若同一個 CSV 文件中具有多個參數,則參數名稱和數值的間隔符需實用英文逗號。

比如,我們有多組登錄的數據,用戶名都不一樣,但密碼都是一樣的,我們就可以創建 username.csv,並把 用戶名 這一參數寫到 username.csv 中,如下:

username
niuhanyang
test10101
test1010

然后在 YAML/JSON 測試用例中,就可以通過 HttpRunner 內置的 parameterize(可簡寫為P)函數引用 CSV 文件。

    parameters:
      - username: ${P(username.csv)} # 或者 ${parameterize(username.csv)}
      - passwd: ["aA123456"]

注意:HttpRunner中,在 parameters 中指定的參數名稱必須與 CSV 文件中第一行的參數名稱一致。

CSV中存放多個參數

對於具有關聯性的多個參數,比如,我們有多組登錄的數據,用戶名和密碼都不一樣,那么我們可以創建 user.csv ,並把用戶名和密碼的參數寫到 user.csv 中,如下:

username,passwd
niuhanyang,aA123456
test10101,fasdfasfa
test1010,aA123456

再修改一下 YAML 腳本:

    parameters:
      - username-passwd: ${P(user.csv)} # 或者 ${parameterize(user.csv)}

注意:上面的寫法是用戶名密碼一對一的關系,如果是按下面這樣寫,那就會是笛卡爾積組合的情況,產生 3 * 3 = 9 種組合。

    parameters:
      - username: ${P(user.csv)}
      - passwd: ${P(user.csv)}

另外,在測試腳本中指定參數時,可以只使用部分參數,並且參數順序無需與 CSV 文件中參數名稱的順序一致。

運行用例

完整的YAML格式用例(test_csv.yml):

- config:
    name: parameters test
    request:
      base_url: http://api.nnzhp.cn
    parameters:
      - username-passwd: ${P(user.csv)} # 或者 ${parameterize(user.csv)}

- test:
    name: login case
    request:
      url: /api/user/login
      method: POST
      headers:
        Content-Type: application/x-www-form-urlencoded
        User-Agent: Fiddler
      data:
        username: $username
        passwd: $passwd
    validate:
      - eq: [status_code, 200]
      - eq: [content.error_code, 0]

在HttpRunner 1.x版本中,引用 CSV 數據文件(如 user.csv),需要將 user.csv 和 test_csv.yml 放在同一目錄下,然后在運行用例即可。運行用例后的報告如下:

引用 CSV 數據文件的測試報告


免責聲明!

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



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