iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 29
0
DevOps

持續測試三十天系列 第 29

[Day 29] HttpRunner 參數化資料驅動測試

我們在 day28 介紹了 HttpRunner 的測試用例分層機制
提到了TestSuite 層不應該有邏輯,而是為了把 測試案例和測試資料結合

TestSuite 是 TestCase 的 無序 集合,集合中的測試用例應該都是相互獨立,不存在先後依賴關係的。

也就是說,TestSuite 應該只負責組織測試案例組織測試資料
今天將使用 day29 的 Code 來說明 HttpRunner 的 參數化資料驅動 測試機制。

在 TestSuite yml 裡可以用 parameters,設定 參數化資料驅動 變數。

參數化資料驅動支持三種方式:

  1. 在 yml 中直接指定參數列表,這種方式最為簡單易用,適合參數列表比較小的情況。
  2. 通過 P函數 引用 CSV 文件,這種方式需要準備 CSV 數據文件,適合數據量比較大的情況。
  3. 通過 debugtalk.py 中自定義的函數生成參數列表,這種方式最為靈活,可通過自定義 Python 函數實現任意場景的資料驅動機制,當需要動態生成參數列表時可選擇這種方式。

1. 在 yml 中,直接指定參數列表 keyword: ["httprunner", "testcafe"]

config:
  name: "testsuite google search"
  base_url: ${ENV(base_url)}

testcases:
  - name: call validate_title
    testcase: testcases/validate_title.yml
    parameters:
      keyword: ["httprunner", "testcafe"]

來跑看看 data-in-testsuite.yml

cd day29

hrun testsuites/data-in-testsuite.yml

測試報告可以看到,完成2 個測試案例validate title "httprunner"validate title "testcafe",這就是 HttpRunner 參數化資料驅動的威力,
使用 parameters 定義測試資料,就能利用資料完成多種測試情境。
https://ithelp.ithome.com.tw/upload/images/20191015/20120775Ez6BtOAIGK.png

2. 通過 P函數 引用 CSV 文件

config:
  name: "testsuite google search"
  base_url: ${ENV(base_url)}

testcases:
  - name: call validate_title
    testcase: testcases/validate_title.yml
    parameters:
      keyword: ${P(data/keyword.csv)}

來跑看看 data-in-csv.ymlkeyword.csv 裡有三筆資料 YApi httprunner testcafe

cd day29

hrun testsuites/data-in-csv.yml

測試報告可以看到,完成3 個測試案例
https://ithelp.ithome.com.tw/upload/images/20191015/20120775Us2XH1UiFB.png

3. 通過 debugtalk.py 中自定義的函數,生成參數列表

config:
  name: "testsuite google search"
  base_url: ${ENV(base_url)}

testcases:
  - name: call validate_title
    testcase: testcases/validate_title.yml
    parameters:
      keyword: ${get_keyword()}

來跑看看 data-in-function.ymldebugtalk.py 裡定義了 get_keyword() 產生測試資料

def get_keyword():
    return [
        {"keyword": "YApi"},
        {"keyword": "httprunner"}
    ]
cd day29

hrun testsuites/data-in-function.yml

測試報告可以看到,完成2 個測試案例
https://ithelp.ithome.com.tw/upload/images/20191015/20120775A761mkwoOf.png


上一篇
[Day 28] HttpRunner 測試用例分層
下一篇
[Day 30] 是結束也是開始
系列文
持續測試三十天30

尚未有邦友留言

立即登入留言