[ddt01篇]十年測試老鳥幫您解析:ddt數據驅動實現自動化測試入門基礎應用

  • 2020 年 4 月 11 日
  • 筆記

一、什麼是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) 分解的參數名必須跟鍵名一致。

四、請繼續關注[ddt02篇]

[ddt02篇]十年測試老鳥幫您解析:ddt結合txt,excel,csv,mysql實現自動化測試數據驅動

 

如果你此文你也有同感,如果你覺得此文對你有幫助,如果你對軟體測試、介面測試、自動化測試、面試經驗交流感興趣歡迎加入軟體測試技術群:695458161,群里發放的免費資料都是筆者十多年測試生涯的精華。還有同行大神一起交流技術哦。

作者:諸葛
原創不易,歡迎轉載,但未經作者同意請保留此段聲明,並在文章頁面明顯位置給出原文鏈接。