Python 自動化測試 四 資料驅動

2021-10-25 07:28:54 字數 1494 閱讀 6684

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

前面文章學習了引數化,當資料量非常大的時候,我們可以將資料存放到外部檔案中,使用的時候將檔案中的資料讀取出來,方便測試資料的管理。資料與測試用例分別管理,可以利用外部資料來源 yaml、json、excel、csv 管理測試資料。

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 = "

)

**分析:

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 檔案作為用例資料來源,控制測試用例的執行,使測試用例資料維護更加方便快捷。

Python 自動化測試 四 資料驅動

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

python 介面自動化測試(四)

說完了soap協議的介面自動化 該說下http協議的介面測試了 這是http請求的實現類,運用了requests模組 之後就是在具體的執行檔案中呼叫上面的httpservice.py 在runmain.py中新增方法 實現控制台輸出執行進度 widgets ip progress percentag...

python自動化測試

為了讓單元測試 能夠被測試和維護人員更容易地理解,最好的解決辦法是讓開發人員遵循一定的規範來編寫用於測試的 具體到python程式設計師來講,則是要採用pyunit這一自動測試框架來構造單元測試用例。目前pyunit已經得到了大多數python開發人員的認可,成了事實上的單元測試標準。1.要被測試的...