Python 數據驅動ddt 使用


准備工作: pip install ddt

 

知識點:

 

一,數據驅動和代碼驅動:

 

數據驅動的意思是  根據你提供的數據來測試的  比如 ATP框架 需要excel里面的測試用例

 

代碼驅動是必須得寫代碼 它才能測試 比如說unittest 

 

二,使用數據驅動框架的意義:
- 代碼復用率高。同一測試邏輯編寫一次,可以被多條測試數據復用,提高了測試代碼的復用率,同時可以提高測試腳本的編寫效率。
- 異常排查效率高。測試框架依據測試數據,每條數據生成一條測試用例,用例執行過程相互隔離,在其中一條失敗的情況下,不會影響其他的測試用例。

 

-代碼的可維護性高。清晰的測試框架,利於其他測試工程師閱讀,提高了代碼的可維護性。

 

tips : 參數少的用yml挺好  參數多的,用json xx.json 格式  這種上下有依賴關系的 就寫py文件  

 

文件名.json的話是json文件里面要寫json串

 

yml每個接口都是獨立運行的  

 

 DDT 使用

DDT包含類的裝飾器ddt和兩個方法裝飾器data(直接輸入測試數據),file_data(可以從json或者yaml中獲取測試數據)

只有yaml和yml結尾的文件以yaml形式上傳,其他情況下默認為json

通常情況下,data中的數據按照一個參數傳遞給測試用例,如果data中含有多個數據,以元組,列表,字典等數據,需要自行在腳本中對數據進行分解或者使用unpack分解數據

@data(a,b)

那么a和b各運行一次用例

@data([a,b],[c,d])

如果沒有unpack,那么[a,b]當成一個參數傳入用例運行

如果有unpack,那么[a,b]被分解開,按照用例中的兩個參數傳遞

@file_data(filename)

對於json的文件,每一個json元素按照一個用例運行,可以依照python分解元組,列表或者字典的方式分解傳入

實例:

import ddt
import unittest
# print(dir(ddt))

@ddt.ddt
class MyCase(unittest.TestCase):
@ddt.data(1,2) #運行2次
def testa(self,value):
print(value)

@ddt.data([1,2]) #運行1次
def testb(self,value):
print(value)

@ddt.data([1,2],[3,4]) #不加unpack 會報錯
def testc(self,a,b):
self.assertNotEqual(a,b)

@ddt.data([1,2],[3,4]) #運行2次
@ddt.unpack
def testd(self,a,b):
self.assertNotEqual(a,b)

if __name__ == '__main__':
unittest.main()


免責聲明!

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



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