ddt的用法:根據數據來生成測試用例


  今天,接上上一篇的的內容,繼續講解單元測試,我們在用python代碼通過函數的方法來寫測試用例,確實可以,但是這些方法中,很多代碼量是重復的,有沒有簡捷化的處理呢?有,ddt就是一個很好用的工具,那么什么是ddt呢?

  ddt:英文全稱為 data driver tsest 中文意思:數據驅動用例  我們在實際的工作中來運用,就是根據數據來生成測試用例,至於這個ddt怎么用,且聽我慢慢道來,一學就會,很容易上手。

  先看我昨天自己寫的一個測試用例類,一個類里面寫了10個方法,每個方法都代表着一個用例,但是,很多都是重復的,怎么辦?

 可以利用ddt來處理,不需要重復寫這么多代碼,只需要把數據放在外面,在方法里面調用就行

1、首先安裝ddt

 2、代碼中導入ddt

import unittest
import ddt
from day_14.task_day13.register import register_check

case_data = [
    {"expected": {"code": 1, "msg": "注冊成功"},
     "data": {'username': 'python999', 'password1': '123456789', 'password2': '123456789'}},
    {"expected": {"code": 0, "msg": "該賬戶已存在"},
     "data": {'username': 'python31', 'password1': '123456', 'password2': '123456'}},
    {"expected": {"code": 0, "msg": "兩次密碼不一致"},
     "data": {'username': 'python111', 'password1': '12377', 'password2': '123456789'}}
]


@ddt.ddt
class TestRegister(unittest.TestCase):
    """注冊的測試用例類"""
    @ddt.data(*case_data)
    def test_register(self, item):
        # 第一步:准備用例數據
        expected = item["expected"]
        data = item["data"]
        # 第二步:傳入參數
        res = register_check(**data)   # 拆包,字典拆包是兩個*號,列表和元組拆包是一個*號
        # 第三步:比對預期結果和實際結果(斷言)
        self.assertEqual(expected, res)


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

對以上代碼,進行截圖解析

 關於那個case_data,它其實就是一個列表,用來裝數據的列表,

 運行后的結果截圖:

 那么有的同學會問,既然你前面提到了,那么如果要執行100條或者1000條用例,怎么辦,也是case_data=[ ],里面寫100個或者1000個?

可以用循環:

# @ddt.data(1, 2, 3, 4)  # 傳了4個參數,就生成4條用例

# li = list(range(1, 100)) # 生成99條用例 # @ddt.data(*li)

所以,ddt用起來很方便,就那么關鍵幾步,所以,一學就會

 


免責聲明!

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



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