unnitest结合ddt实现数据驱动

本文介绍了如何结合unittest和ddt库在Python中实现数据驱动的单元测试。通过@ddt装饰器,@data和@unpack可以方便地加载和处理测试数据,支持列表、元组、字典及文件等多种数据格式。示例中展示了不同数据类型的用法,包括单个值、多组值、解包和从文件加载数据。
摘要由CSDN通过智能技术生成

一、unnitest结合ddt实现数据驱动的步骤

安装ddt模块
使用@ddt,@data,@unpack(解包),@file_data加载数据
加载数据的格式包括:列表,元组,字典,文件等

二、示例

# -*- coding: utf-8 -*-
# @Time: 2022/5/30 11:45 上午
# @Author: wcystart
# @File: test_ddt.py
# @description:
"""

"""
import os
from ddt import ddt, data, unpack, file_data
import unittest


def get_data():
    test_data = [{'name': 'tom', 'age': 20}, {'name': 'Tina', 'age': 18}]
    return test_data


@ddt
class TestCase(unittest.TestCase):
    @data(1, 2, 3)  # 读取元祖数据-一组数据
    def test1(self, value):
        print(value)  # 1 2 3

    @data((1, 2, 3), (4, 5, 6))  # 读取元祖数据-多组数据
    def test2(self, value):
        print(value)  # (1, 2, 3)  (4, 5, 6)

    @data((1, 2, 3), (4, 5, 6))  # 读取元祖数据-多组数据,并对数据进行拆分
    @unpack
    def test3(self, value1, value2, value3):
        print(value1, value2, value3)  # 1 2 3      4 5 6

    # 列表
    @data(get_data())
    def test4(self, value):
        print(value)

    # 字典
    @data({'name': 'tom', 'age': 20}, {'name': 'Tina', 'age': 18})
    def test5(self, value):
        print(value)  # {'name': 'tom', 'age': 20}   {'name': 'Tina', 'age': 18}

    # 字典拆分
    @data({'name': 'tom', 'age': 20}, {'name': 'Tina', 'age': 18})
    @unpack
    def test5(self, name, age):
        print(name, age)  # tom 20   Tina 18

    # 读文件
    @file_data(os.getcwd() + '/test.json')
    def test7(self, value):
        print(value)  # ['tom', 'rose', 'tina']


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

test.json
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值