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

前言

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

當數據量比較大的時候,咱們但願能夠把測試數據寫到 CSV 文件中,而後直接引用 CSV 文件數據。api

本人環境:HttpRunner V1.5.8app

##測試場景函數

登陸接口文檔說明: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 組測試數據,當咱們有十、100組測試數據,若是直接寫在測試腳本中,可能會很不方便。咱們能夠把這些測試數據都寫到CSV文件,而後直接引用CSV文件,這樣就方便多了,咱們的腳本也顯得更加簡潔。url

CSV中存放單個參數

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

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

好比,咱們有多組登陸的數據,用戶名都不同,但密碼都是同樣的,咱們就能夠建立 username.csv,並把 用戶名 這一參數寫到 username.csv 中,以下:code

username
niuhanyang
test10101
test1010

而後在 YAML/JSON 測試用例中,就能夠經過 HttpRunner 內置的 parameterize(可簡寫爲P)函數引用 CSV 文件。orm

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 數據文件的測試報告

相關文章
相關標籤/搜索