Python 自動(dòng)化測試(四):數(shù)據(jù)驅(qū)動(dòng)

在實(shí)際的測試工作中,通常需要對多組不同的輸入數(shù)據(jù),進(jìn)行同樣的測試操作步驟,以驗(yàn)證我們的軟件質(zhì)量。這種測試,在功能測試中非常耗費(fèi)人力物力,但是在自動(dòng)化中,卻比較好實(shí)現(xiàn),只要實(shí)現(xiàn)了測試操作步驟,然后將多組測試數(shù)據(jù)以數(shù)據(jù)驅(qū)動(dòng)的形式注入,就可以實(shí)現(xiàn)了。
前面文章學(xué)習(xí)了參數(shù)化,當(dāng)數(shù)據(jù)量非常大的時(shí)候,我們可以將數(shù)據(jù)存放到外部文件中,使用的時(shí)候?qū)⑽募械臄?shù)據(jù)讀取出來,方便測試數(shù)據(jù)的管理。數(shù)據(jù)與測試用例分別管理,可以利用外部數(shù)據(jù)源 YAML、JSON、Excel、CSV 管理測試數(shù)據(jù)。
YAML 是一種容易閱讀、適合表示程序語言的數(shù)據(jù)結(jié)構(gòu)、可用于不同程序間交換數(shù)據(jù)、豐富的表達(dá)能力和可擴(kuò)展性、易于使用的語言。通過縮進(jìn)或符號來表示數(shù)據(jù)類型。
pyyaml 模塊在 Python 中用于處理 YAML 格式數(shù)據(jù),主要使用 yaml.safe_dump() 和 yaml.safe_load() 函數(shù)將 Python 值和 YAML 格式數(shù)據(jù)相互轉(zhuǎn)換。工作中常常使用 YAML 格式的文件存儲(chǔ)測試數(shù)據(jù)。
安裝
案例
創(chuàng)建用例文件以及數(shù)據(jù)文件來完成數(shù)據(jù)驅(qū)動(dòng)的測試案例,創(chuàng)建一個(gè)文件夾 testdata,在這個(gè)文件夾下創(chuàng)建 data.yml 和 test_yaml.py 文件。
創(chuàng)建 data.yml 文件:
創(chuàng)建“test_yaml.py”,代碼如下:
代碼分析:
yaml 文件里定義了列表數(shù)據(jù),通過 open() 方法獲取 data.yml 文件對象,使用 yaml.safe_load() 加載這個(gè)文件對象,將 YAML 格式文件轉(zhuǎn)換為 Python 值,分別傳到到用例中生成多條用例分別執(zhí)行。
運(yùn)行結(jié)果:
運(yùn)行結(jié)果中 [1-2] 和 [20-30] 代碼傳入的兩組參數(shù),分別傳入 test_foo() 用例方法中執(zhí)行,并且分別生成兩條測試結(jié)果。
以上,pytest 組合 YAML 實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng),YAML 文件作為用例數(shù)據(jù)源,控制測試用例的執(zhí)行,使測試用例數(shù)據(jù)維護(hù)更加方便快捷。