python之ddt模式隨記


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的用法

 


免責聲明!

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



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