20190705 Python資料驅動之DDT

2022-07-20 08:51:10 字數 2584 閱讀 7423

ddt

ddt 是第三方模組,需安裝, pip install ddt

包含乙個類裝飾器@ddt和兩個方法裝飾器@data和@file_data

通常情況下,@data中的資料按照乙個引數傳遞給測試用例,如果data中含有多個資料,以元組,列表,字典等資料,需要自行在指令碼中對資料進行分解或者使用unpack分解資料。

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

那麼[a,b]和[c,d]各執行一次用例

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

如果沒有@unpack,那麼[a,b]當成乙個引數傳入用例執行

如果有@unpack,那麼[a,b]被分解開,按照用例中的兩個引數傳遞,具體情況例項

import

unittest

from ddt import

ddt,data,unpack,file_data

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

#如果沒有@unpack,那麼[a,b]當成乙個引數傳入用例執行

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

@ddt#

類裝飾器

class

mytesting(unittest.testcase):

defsetup(self):

print('

this is the setup')

@data([1,2,3])#

方法裝飾器

deftest_1(self,value):

print('

value=

',value)

@data([3,2,1],[5,3,2],[10,4,2])

@unpack

deftest_2(self,a,b,c):

print('

a=%s,b=%s,expected=%s

'%(a,b,c))

actual = int(a) -int(b)

expected =int(c)

self.assertequal(actual, expected)

@data([2,3],[4,5])

deftest_3(self,a,b):

self.assertequal(a,b)

@data()

@unpack

deftest_4(self,a,b):

print('

test_4

',a,b)

@file_data(

"test_data_list.json

")#方法裝飾器

deftest_5(self,value):

print('

test_5_file_data,value=

',value)

defteardown(self):

print('

this is teardown')

if__name__ == '

__main__':

unittest.main(verbosity=2)

test_1

執行次數:1次

引數值:value=[1,2,3]

執行結果:pass

test_2

執行次數:3次

引數值:第一輪a=3,b=2,c=1;第二輪a=5,b=3,c=2;第三輪a=10,b=4,c=2

執行結果:第一輪、第二輪通過,第三輪失敗fail

失敗原因:self.assertequal(a-b = c)失敗

test_3

執行次數:2次

引數值:第一輪a=[2,3];第二輪a=[4,5]

執行結果:執行錯誤error

失敗原因:缺少引數b

i.            由於沒有加@unpack, 雖然還是會被理解成2組測試資料,但是[2,3]作為乙個整體被傳給了a, 因為b就沒有值傳入了,所以一執行後報了  typeerror: test_compare() missing 1 required positional argument: 'b'  這句錯

test_4

執行次數:1次

引數值:a = first,b=second

執行結果:pass

test_5

執行次數:test_data_list.json檔案裡面的資料數

引數值:每次value = test_data_list.json裡面的一條資料

執行結果:pass

@data裡面的資料格式

@data裡面的資料可以是字典,列表,字典(注意字典的key值一定要跟引數名對應)

[

"鄧肯||蒂姆",

"喬丹||麥可",

"庫里||史蒂芬",

"杜蘭特||凱文",

"詹姆斯||勒布朗"

]

原文參考:

python 數獨 Python中的數獨檢查器

我正在嘗試用python建立乙個數獨檢查器 ill formed 5,3,4,6,7,8,9,1,2 6,7,2,1,9,5,3,4,8 1,9,8,3,4,2,5,6,7 8,5,9,7,6,1,4,2,3 4,2,6,8,5,3,7,9 7,1,3,9,2,4,8,5,6 9,6,1,5,3,7...

python解奧數題 python 來做奧數題

def init self,count 6,digitals 0,1,2,3,4,5,6,7,8,9 super datagenerator,self init self.count count self.digitals digitals def get digitals self return ...

python求黑洞數 求解黑洞數

問題描寫 黑洞數又稱圈套數,是類具有奇特轉換特性的整數。任何1個數字不全相同的整數,經有限 重排求差 操作,總會得到某1個或1些數,這些數即為黑洞數。重排求差 操作即把組成該數的數字重排後得到的最大數減去重排後得到的最小數。舉個例子,3位數的黑洞數為495.簡易推導程序 隨意找個數,如297,3個位...