一、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