Python下的數據驅動模式DDT庫


1、DDT介紹
  DDT(Data-Driven Tests)數據驅動測試,測試數據與測試行為分離,通過數據來驅動測試
  DDt數據驅動測試,允許通過使用不同的測試數據運行一個測試用例,根據參數的個數可以運行多個不同的測試用例    
2、為什么使用DDT
  1、提高代碼復用率減少代碼冗余
  2、可以將測試數據使用一個文件來存儲
  3、數據和測試業務分離
4、DDT庫的安裝
  1、直接在PyCharm->File->Setting->Project->Project Interpreter頁面添加
  2、使用命令pip install ddt下載並安裝
5、API
  @ddt 類裝飾器,作用於類上,應用於測試用例類
  @data 作用於方法上,把參數作為測試數據
  @unpack 方法裝飾器添加解壓功能
6、具體應用示例
import unittest
from ddt import ddt, data, unpack
'''
    1、導入ddt相關包:from ddt import ddt, data, unpack
    2、類上添加unittest.TestCase作用於測試用例上,和unittest一起使用
'''


@ddt
class Testddt(unittest.TestCase):
    def setUp(self):
        pass

    '''結果運行三次'''
    @data(12, 13, 14)
    def test_1(self, value):
        print(value)

    '''結果運行一次,出(12,13,14)'''
    @data((12, 13, 14))
    def test_2(self, value):
        print(value)

    '''結果運行一次,輸出12,13,14
       參數個數看的是元祖里面的個數
    '''
    @data((12, 13, 14))
    @unpack
    def test_3(self, value1, value2, value3):
        print(value1, value2, value3)

    '''結果運行3次,分別輸出(3, 2)  (4, 3) (5, 3)'''
    @data((3, 2), (4, 3), (5, 3))
    def test_4(self, value):
        print(value)

    @data((3, 2), (4, 3), (5, 3))
    @unpack
    def test_5(self, value1, value2):
        print(value1,value2)

    @data([3, 2], [4, 3], [5, 3])
    def test_6(self, value1):
        print(value1)

    @data([3, 2], [4, 3], [5, 3])
    @unpack
    def test_7(self, value1, value2):
        print(value1,value2)

    @data({'first': 1, 'second': 3, 'third': 2},{'first': 4, 'second': 6, 'third': 5})
    def test_8(self, value1):
        print(value1)

    '''
    字典拆包,參數需要和key名稱一致,分別對應key值輸出1 3 2
    '''
    @data({'first': 1, 'second': 3, 'third': 2})
    @unpack
    def test_9(self, first, second, third):
        print(first,second,third)
   
7、總結
  1、ddt針對的測試數據類型有元組、字典、列表、單個值,根據情況可使用@unpack進行拆包,可解析成多個參數提供使用。
  2、示例中的結果,需要反復運行得到結果並分析

  參考ddt庫API網址:https://ddt.readthedocs.io/en/latest/api.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM