ddt 是第三方模塊,需安裝, pip install ddt
DDT包含類的裝飾器ddt和兩個方法裝飾器data(直接輸入測試數據)
通常情況下,data中的數據按照一個參數傳遞給測試用例,如果data中含有多個數據,以元組,列表,字典等數據,需要自行在腳本中對數據進行分解或者使用unpack分解數據。
@data(a,b)
a和b各運行一次用例,該方法會調用2次
@data([a,d],[c,d])
如果沒有@unpack,那么[a,b]當成一個參數傳入用例運行
如果有@unpack,那么[a,b]被分解開,按照用例中的兩個參數傳遞
1、首先安裝ddt
$>pip install ddt
由於已經安裝過了,所以提示為下面的,可以忽略
2、安裝完畢之后,可以配合unittest來實操一下,具體看例子。
import ddt import unittest ## 定義任意的參數,list,dict,str,tuple等等 t_list = [1,2] t_dict = {"a":"a","b":"b"} t_str = 'test_string' t_tuple = (1,2) @ddt.ddt class Test(unittest.TestCase): def setUp(self): print('start') ##這個僅有一個參數,將t_list賦值給data,打印 @ddt.data(t_list) def test_a(self,data): print(data) ## 這個有多個參數傳入時,有一個函數接受 @ddt.data(t_list,t_dict,t_str,t_tuple) def test_b(self,data): print(data) ## 這個有多個參數傳入,有多個函數接收 @ddt.data(t_list,t_dict,t_str,t_tuple) def test_c(self,a,b,c,d): print(a) print(b) print(c) print(d) if __name__ == '__main__': unittest.main()
結果如下:
由上可以看出,第一個,第二個函數執行沒有問題,第三個函數執行報錯了。可以得出如下
---可以傳入多個類型的參數,可以接受多個類型
---可以同時傳入多個類型的參數,分別傳入,每個參數都會執行一次測試函數,作為一個整體傳給測試函數。
3、那么如果我們單個傳入參數的內容有很多,需要分解一下來執行呢?這個時候就要用到unpack了,如下
import ddt import unittest ## 定義任意的參數,list,dict,str,tuple等等 t_dict = {"a":'a',"b":"b","c":"c"} @ddt.ddt class Test(unittest.TestCase): def setUp(self): print('start') ##這里加了unpack,分別給傳入對應參數 @ddt.data(t_dict) @ddt.unpack def test_a(self,a,b,c): print(a) print(b) print(c) ##這里沒有加unpack,分別對應參數 @ddt.data(t_dict) def test_b(self,a,b,c): print(a) print(b) print(c) if __name__ == '__main__': unittest.main()
結果如下:
由上,我們可以得到,unpack的用法