Unittest + DDT

1 安裝 DDT
$ pip3 install ddt
2 @data 裝飾器

2.1 按照一個(gè)參數(shù)傳遞給測(cè)試用例

import unittest

from ddt import ddt, data, unpack


@ddt
class DataDrivenDDT(unittest.TestCase):
    @data('Alibaba')
    def test_data(self, testdata):
        print(testdata)


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

2.2 @data(a,b) ,data里面的參數(shù)按順序傳入到用例參數(shù)中每個(gè)參數(shù)執(zhí)行一次

import unittest

from ddt import ddt, data, unpack

@ddt
class DataDrivenDDT(unittest.TestCase):
    @data('Alibaba', 'Tencent')
    def test_data(self, testdata):
        print(testdata)


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

2.3 data中含有多個(gè)數(shù)據(jù),以元組,列表,字典等數(shù)據(jù)

import unittest

from ddt import ddt, data, unpack


@ddt
class DataDrivenDDT(unittest.TestCase):
    @data(['Alibaba', 'Tencent'])
    def test_data(self, testdata, a):
        print(testdata, a)


if __name__ == '__main__':
    unittest.main()
3 @unpack 裝飾器

data 包含數(shù)組等,使用 @unpack 分解數(shù)據(jù)

import unittest

from ddt import ddt, data, unpack


@ddt
class DataDrivenDDT(unittest.TestCase):
    @data(['Alibaba', 'Tencent', '1'], ['Alibaba1', 'Tencent1', '2'])
    @unpack
    def test_data(self, testdataa, a, b):
        print(testdataa, a, b)


if __name__ == '__main__':
    unittest.main()
4 @file_data(filename) 裝飾器

可以從json或者yaml中獲取測(cè)試數(shù)據(jù)

先創(chuàng)建一個(gè) data.yaml 文件

lis:
 - Cat
 - Dog
 - Goldfish

lis1:
 - Cat1
 - Dog1
 - Goldfish1

在測(cè)試用例中使用 data.yml 數(shù)據(jù)源

import unittest

from ddt import ddt, data, unpack, file_data


    @file_data('data.yaml')
    def test_yamldata(self, value):
        print(value)


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

引用 .json 格式的文件與 .yaml 相同,只是再使用時(shí)在 @file_data() 引用 json 文件就可以。這里就不再贅述了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容