import unittest
from ddt import ddt, data, unpack
test_list = [[1,2],[3,4]]
test_dict = [{'name':"jike", "age":18}]
@ddt #ddt装饰器,只能装饰测试类
class DDT_Unittest(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
@data(*test_list) #参数前面加*号是脱去test_list外面的[],变成:[1,2],[3,4]
@unpack #1. 使用unpack,将脱去外衣的test_list,再按照,分割,最后成:[1,2] [3,4]
#2. 接收参数个数要与单个列表中的元素个数一致
def test_ddt_list(self, a, b):
print(f'test_ddt_list: a的值是:{a}')
print(f'test_ddt_list: b的值是:{b}')
'''
结果是:
a的值是:1
b的值是:2
a的值是:3
b的值是:4
'''
@data(*test_dict)
@unpack #1. 对字典进行unpack时,接收的参数名需要与字典的key对应
#2. 如果字典键值对超过5个时,则不建议用unpack,直接接收整个字典,后面取值直接从字典中取值
def test_ddt_dict_two(self, name, age):
print(f'test_ddt_dict_two: name的值是:{name}')
print(f'test_ddt_dict_two: age的值是:{age}')
'''
结果是:
name的值是:jike
age的值是:18
'''
@data(*test_dict)
#@unpack #2. 如果字典键值对超过5个时,则不建议用unpack,直接接收整个字典,后面取值直接从字典中取值
def test_ddt_dict_many(self, test_data):
print(f'test_ddt_dict_many: test_data的值是:{test_data}, 类型是:{type(test_data)}')
print(f'test_ddt_dict_many: 从test_data中取name值:{test_data["name"]}')
'''
结果是:
test_data的值是:{'name': 'jike', 'age': 18}, 类型是:<class 'dict'>
从test_data中取name值:jike
'''
if __name__ == '__main__':
unittest.main()