1. 程式人生 > 實用技巧 >老鳥幫您解析——ddt資料驅動實現自動化測試

老鳥幫您解析——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自動化、介面、框架搭建等資料