雲計算

Python 自動化測試(四):數據驅動

本文節選自霍格沃玆測試學院內部教材,文末鏈接進階學習。

在實際的測試工作中,通常需要對多組不同的輸入數據,進行同樣的測試操作步驟,以驗證我們的軟件質量。這種測試,在功能測試中非常耗費人力物力,但是在自動化中,卻比較好實現,只要實現了測試操作步驟,然後將多組測試數據以數據驅動的形式注入,就可以實現了。

前面文章學習了參數化,當數據量非常大的時候,我們可以將數據存放到外部文件中,使用的時候將文件中的數據讀取出來,方便測試數據的管理。數據與測試用例分別管理,可以利用外部數據源 YAML、JSON、Excel、CSV 管理測試數據。

pytest 結合 YAML

YAML 是一種容易閱讀、適合表示程序語言的數據結構、可用於不同程序間交換數據、豐富的表達能力和可擴展性、易於使用的語言。通過縮進或符號來表示數據類型。

pyyaml 模塊在 Python 中用於處理 YAML 格式數據,主要使用 yaml.safe_dump() 和 yaml.safe_load() 函數將 Python 值和 YAML 格式數據相互轉換。工作中常常使用 YAML 格式的文件存儲測試數據。

安裝

pip install PyYAML

案例

創建用例文件以及數據文件來完成數據驅動的測試案例,創建一個文件夾 testdata,在這個文件夾下創建 data.yml 和 test_yaml.py 文件。

創建 data.yml 文件:

-
  - 1
  - 2
-
  - 20
  - 30

創建“test_yaml.py”,代碼如下:

import pytest
import yaml

@pytest.mark.parametrize("a,b", yaml.safe_load(open("datas.yml",\
encoding='utf-8')))
def test_foo(a,b):
    print(f"a + b = {a + b}")

代碼分析:

yaml 文件裡定義了列表數據,通過 open() 方法獲取 data.yml 文件對象,使用 yaml.safe_load() 加載這個文件對象,將 YAML 格式文件轉換為 Python 值,分別傳到到用例中生成多條用例分別執行。

運行結果:

省略...
test_params.py::test_foo[1-2] 
test_params.py::test_foo[20-30] 
省略...

運行結果中 [1-2] 和 [20-30] 代碼傳入的兩組參數,分別傳入 test_foo() 用例方法中執行,並且分別生成兩條測試結果。

以上,pytest 組合 YAML 實現數據驅動,YAML 文件作為用例數據源,控制測試用例的執行,使測試用例數據維護更加方便快捷。

更多技術文章分享及測試資料點此獲取

Leave a Reply

Your email address will not be published. Required fields are marked *