HttpRunner學習6--使用parameters參數化


前言

在使用HttpRunner測試過程中,我們可能會遇到這種場景:

賬號登錄功能,需要輸入用戶名和密碼,設計測試用例后有 N 種組合情況

如果測試組合比較少,比如只有2個,那我們直接在YAML腳本中寫2個 test 就行了,但如果測試組合有10個,或者上百個,我們總不可能寫10個,甚至100個 test 吧?

因此,在這里我們就需要用到參數化。在HttpRunner中,通過關鍵字 parameters 來實現參數化數據驅動機制,不管有多少測試組合,我們只需寫1個 test 就行了。

本人環境:HttpRunner V1.5.8

測試場景

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

我們繼續以之前的登錄接口來學習,如果不使用 parameters 來進行參數化,那么我們的用例可能就是這樣的:

- config:
    name: login test
    request:
      base_url: http://api.nnzhp.cn

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

省略很多個 test

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

在上面的用例中,我們可能要寫很多的 test ,在這些 test 中,除了 request-data 中 username 和 passwd 的值不一樣,其他內容都完全一樣。

當我們使用 parameters 來實現參數化后,我們只要寫 1個test 就行了,避免了重復的腳本代碼,同時腳本內容也變得更加簡潔。

parameters參數化--一對一

我目前的 HttpRunner 版本是 1.5.8 ,關鍵字 parameters 可以在 config 或 test 中使用,我們只以在 config 中使用 parameters 來進行說明。

注意:在 HttpRunner 1.5.11 之后的版本中,不再支持在 test 中使用 parameters 。

我們准備 3 組登錄用的數據,其中,第1組和第3組是能正常登錄的用戶名和密碼,第2組是錯誤的用戶名和密碼。使用 parameters 如下:

    parameters:
      - username-passwd:
          - ["niuhanyang", "aA123456"] # 正確的用戶名密碼
          - ["test10101", "fasdfasfa"] # 錯誤的用戶名密碼
          - ["test1010", "aA123456"] # 正確的用戶名密碼

然后,只保留一個 test 即可,並在 request-data 中引入參數,如下:

      data:
        username: $username
        passwd: $passwd

完整的YAML用例:

- 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]

運行用例,然后即可得到測試報告,如下:

測試報告--一對一關系

parameters參數化--多對一

上面介紹的是用戶名和密碼一對一的情況,如果是 多對一 或 一對多 關系,比如 3 組登錄用的數據中,用戶名不一樣,但密碼都是相同的,這個時候,如果用上面的寫法,就不太方便了。

對於這種情況,我們可以這樣寫:

    parameters:
      - username: ["niuhanyang", "test10101", "test1010"]
      - passwd: ["aA123456"]

只需改動 config 中的 parameters ,其他內容都不需要修改。運行用例后的報告如下:

測試報告--多對一關系

parameters參數化--多對多

有時候,我們可能存在多對多的測試場景,即笛卡爾積的組合情況。如果有 3 個不同的用戶名,2 個不同的密碼,對於這種情況,使用笛卡爾積組合,就應該存在 2 * 3 = 6 種測試組合。

對於這種情況,我們可以這樣寫:

    parameters:
      - username: ["niuhanyang", "test10101", "test1010"]
      - passwd: ["aA123456", "fasdfasfa"]

只需改動 config 中的 parameters ,其他內容都不需要修改。運行用例后的報告如下:

測試報告--多對多關系


免責聲明!

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



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