新聞中心
本篇文章則介紹如何使用Python進行數(shù)據(jù)驅(qū)動。這里以pytest測試框架為例,重點講解pytest參數(shù)化相關(guān)知識。(關(guān)于pytest的環(huán)境配置以及基礎(chǔ)使用不在本文的討論范圍)

創(chuàng)新互聯(lián)服務(wù)項目包括波密網(wǎng)站建設(shè)、波密網(wǎng)站制作、波密網(wǎng)頁制作以及波密網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,波密網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到波密省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
pytest中使用標(biāo)簽@pytest.mark.parametrize 實現(xiàn)參數(shù)化功能,在執(zhí)行用例的時候該標(biāo)簽迭代中的每組數(shù)據(jù)都會作為一個用例執(zhí)行。
一組參數(shù)化數(shù)據(jù)
定義參數(shù)化數(shù)據(jù),代碼如下:
- class TestDemo1:
- @pytest.mark.parametrize('actual_string, expect_string', [(1, 1), ('BB', 'BB'),('AA', 'BB')])
- def test_1(self, actual_string, expect_string):
- assert (expect_string == actual_string)
運行結(jié)果如下,三組數(shù)據(jù)在三條測試用例中運行,其中數(shù)據(jù)('AA', 'BB')運行失敗!
多組參數(shù)化數(shù)據(jù)
在一個測試類中,可以定義多組參數(shù)化數(shù)據(jù)(參數(shù)化數(shù)據(jù)個數(shù)不同,test_1二個,test_2三個),代碼如下:
- class TestDemo1:
- @pytest.mark.parametrize('actual_string, expect_string', [(1, 1), ('BB', 'BB'),('AA', 'BB')])
- def test_1(self, actual_string, expect_string):
- assert (expect_string == actual_string)
- @pytest.mark.parametrize('result, a,b', [(1, 1,0),(2, 1,0) ])
- def test_2(self, result, a,b):
- assert (result == a+b)
運行結(jié)果如下,二組數(shù)據(jù)分別在test_1和test_2中運行!
從excel中讀取數(shù)據(jù)作為參數(shù)
我們可以自定義一些方法,對外部文件進行讀取,然后把讀取的數(shù)據(jù)作為參數(shù)在pytest
中引用。把測試數(shù)據(jù)保存在excel中,如下圖
寫一個讀取excel類文件的方法,使用模塊pandas ,使用命令pip install pandas 安裝模塊,源碼如下:
- import pandas as pd
- # 讀取Excel文件 -- Pandas
- def read_data_from_pandas(excel_file, sheet_name):
- if not os.path.exists(excel_file):
- raise ValueError("File not exists")
- s = pd.ExcelFile(excel_file)
- df = s.parse(sheet_name)#解析sheet頁的數(shù)據(jù)
- return df.values.tolist()#數(shù)據(jù)返回為list
從excel中讀取數(shù)據(jù),并賦值給變量進行參數(shù)化,代碼如下:
- @pytest.mark.parametrize('actual_string, expect_string', read_data_from_pandas('E:/TestData.xls', 'data1'))
- def test_3(self, actual_string, expect_string):
- assert (expect_string == actual_string)
運行結(jié)果如下,三組數(shù)據(jù)在三條測試用例中運行!
注意:excel中的首行,默認(rèn)不會作為測試數(shù)據(jù)處理。
本文標(biāo)題:測試驅(qū)動技術(shù)(TDD)系列之-pytest實現(xiàn)測試數(shù)據(jù)驅(qū)動
標(biāo)題網(wǎng)址:http://www.fisionsoft.com.cn/article/dhissed.html


咨詢
建站咨詢
