老鳥幫您解析——ddt資料驅動實現自動化測試
一、什麼是DDT資料驅動框架
全稱:data driver test資料驅動測試框架,可以完美的應用於unittest框架實現資料驅動。ddt使用簡介:
1.測試資料為多個字典的list型別
2.測試類前加修飾@ddt.ddt
3.用例前加修飾@ddt.data() 或 @ddt.file_data()
4.執行後測試會自動載入成三個單獨的用例
注意:@data裝飾符可以把引數當成測試資料,引數可以是單個值、列表、元祖、字典,對於列表和元祖需要使用@unpack裝飾符把元祖和列表解析成多個引數。
二、ddt資料驅動框架的安裝和使用方式
1.安裝方式一:在dos視窗中使用命令:pip install ddt 安裝 (建議用這種)
驗證是否安裝成功:在dos命令中輸入python進入python環境,然後輸入import ddt,如果沒有報錯則說明安裝成功!如下圖所示:
2.安裝方式二:直接訪問:https://pypi.org/project/ddt/#files下載ddt原始碼(ddt-1.2.2.tar.gz)。下載後解壓,然後在dos命令中切換到setup.py所在目錄,執行python setup.py install 進行安裝。
3.把ddt匯入專案中。
File->Settings->project:專案名->加號->輸入ddt->install package
4.ddt使用方式和常用模組
使用方式:
ddt是通過裝飾器的形式來呼叫的
ddt常用模組:
@ddt(申明當前類使用ddt框架),
@data(用於傳參),
@unpack(將引數解包,一般針對元組和列表),
@data_file(ddt讀取yaml/json檔案)
三、@ddt,@data,@unpack的基本使用方法。
1.分別傳入單個數字、字串、元組、列表、集合、字典做一個案例。如:
第一組案例:
```
@ddt(100)
def testcase1(self,name):
print(name)
@ddt('諸葛')
def testcase1(self,name):
print(name)
@ddt(('諸葛','司馬懿','韓信'))
def testcase1(self,name):
print(name)
@ddt(['諸葛','司馬懿','韓信'])
def testcase1(self,name):
print(name)
@ddt({'諸葛','魏國':'司馬懿','楚國':'韓信'})
def testcase1(self,name):
print(name)
@ddt({'蜀國':'諸葛','司馬懿','韓信'})
def testcase1(self,name):
print(name)
```
第二組案例:使用@unpack對單個元組和列表解包。
```
#unpack解析單個元組
@data(('諸葛','司馬'))
@unpack
def test1_data(self,args1,args2):
print(args1,args2)
#unpack解析單個列表
@data(['諸葛','司馬'])
@unpack
def test2_data(self,args1,args2):
print(args1,args2)
```
2.分別傳入多個數字、字串、元組、列表、集合、字典做一個案例。如:
第一組案例:
程式碼可自己嘗試:注意:檢視執行結果,用例運行了多次。
第二組案例:使用@unpack解包:多個元組和列表,如:
```
#data傳入多個元組,unpack對每個元組解析
@data(('諸葛','司馬'),('馬超','關羽'))
@unpack
def test1_data(self,args1,args2):
print(args1,args2)
#data傳入多個列表,unpack對每個列表解析
@data(['諸葛','司馬'],['馬超','關羽'])
@unpack
def test1_data(self,args1,args2):
print(args1,args2)
```
注意:
(1) 如果傳入:[('諸葛','司馬'),('馬超','關羽')],則@unpack解析後得到('諸葛','司馬')和('馬超','關羽'),需要兩個引數接收,用例只執行一次,所以得出@unpack解析最外層的元祖或列表。
(2) 如果傳入的是字典列表(list of dict) 分解的引數名必須跟鍵名一致。
如果你此文你也有同感,如果你覺得此文對你有幫助,加入我們,642830685。群,領取最新大廠面試資料、Python自動化、介面、框架搭建等資料