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

前言

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

帳號登陸功能,須要輸入用戶名和密碼,設計測試用例後有 N 種組合狀況api

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

所以,在這裏咱們就須要用到參數化。在HttpRunner中,經過關鍵字 parameters 來實現參數化數據驅動機制,無論有多少測試組合,咱們只需寫1個 test 就好了。學習

本人環境:HttpRunner V1.5.8測試

測試場景

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

咱們繼續以以前的登陸接口來學習,若是不使用 parameters 來進行參數化,那麼咱們的用例可能就是這樣的:spa

- 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 就好了,避免了重複的腳本代碼,同時腳本內容也變得更加簡潔。code

parameters參數化--一對一

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

**注意:**在 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 ,其餘內容都不須要修改。運行用例後的報告以下:

測試報告--多對多關係

相關文章
相關標籤/搜索