在使用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
我目前的 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]
運行用例,而後便可獲得測試報告,以下:
上面介紹的是用戶名和密碼一對一的狀況,若是是 多對一 或 一對多 關係,好比 3 組登陸用的數據中,用戶名不同,但密碼都是相同的,這個時候,若是用上面的寫法,就不太方便了。
對於這種狀況,咱們能夠這樣寫:
parameters: - username: ["niuhanyang", "test10101", "test1010"] - passwd: ["aA123456"]
只需改動 config 中的 parameters ,其餘內容都不須要修改。運行用例後的報告以下:
有時候,咱們可能存在多對多的測試場景,即笛卡爾積的組合狀況。若是有 3 個不一樣的用戶名,2 個不一樣的密碼,對於這種狀況,使用笛卡爾積組合,就應該存在 2 * 3 = 6 種測試組合。
對於這種狀況,咱們能夠這樣寫:
parameters: - username: ["niuhanyang", "test10101", "test1010"] - passwd: ["aA123456", "fasdfasfa"]
只需改動 config 中的 parameters ,其餘內容都不須要修改。運行用例後的報告以下: