python中unittest單元測試框架使用ddt實現數據驅動-ddt、data、unpack使用簡介


ddt是第三方模塊,需安裝:pip install -i https://pypi.douban.com/simple ddt

簡單的demo介紹,包括data和unpack的使用:

import unittest
from ddt import ddt, data, unpack


@ddt
class TestAdd(unittest.TestCase):
    @data(*[[1, 2, 3], [4, 5, 9]])
    # data裝飾方法,和for循環一樣,變量列表中每個數據,然后傳遞給被裝飾的方法的一個參數
    # 有幾條數據,就執行幾次用例
    # 第一次遍歷[1,2,3],第二次遍歷[4,5,9]
    def test_demo1(self, data):
        res = data[0] + data[1]
        expected = data[2]
        try:
            self.assertEqual(expected, res)
        except AssertionError as e:
            raise e

    @data(*[{'a': 0, 'b': 0, 'expected': 0}, {'a': 1, 'b': 1, 'expected': 2}])
    def test_demo2(self, data):
        res = data['a'] + data['b']
        expected = data['expected']
        try:
            self.assertEqual(expected, res)
        except AssertionError as e:
            raise e

    @data(*[[10, 20, 30], [40, 50, 90]])
    @unpack
    # 加unpack 根據逗號來進行拆分,變成了3個參數---測試方法要用3個參數來進行接收
    def test_demo3(self, a, b, expected):
        res = a + b
        try:
            self.assertEqual(expected, res)
        except AssertionError as e:
            raise e

    @data(*[{'a': 0, 'b': 0, 'expected': 0}, {'a': 1, 'b': 1, 'expected': 2}])
    @unpack
    # 如果是字典的話 要用他的key作為參數來進行數據接收
    def test_demo4(self, a, b, expected):
        res = a + b
        try:
            self.assertEqual(expected, res)
        except AssertionError as e:
            raise e


免責聲明!

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



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