Python 自動化測試 四 資料驅動

2022-09-18 12:15:16 字數 1805 閱讀 7709

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

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

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

**活動推薦

**本周四晚 8 點,霍格沃茲測試學院邀請到資深測試技術專家方程老師分享《pytest 自動化測試最佳實踐》

主題公開課,通過動手實戰,快速掌握 pytest 高階技能。

戳「閱讀原文」,提公升自己的核心競爭力吧!

Python 自動化測試 四 資料驅動

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

python 介面自動化測試(四)

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

python自動化測試

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