unittest- 学习ddt
Posted come202011
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unittest- 学习ddt相关的知识,希望对你有一定的参考价值。
import unittest from ddt import ddt, data, unpack """ 1.正常情况下,测试函数(即测试用例)中不可以传参,如果要使用参数,只能通过超继承_init_函数, 在初始化函数中传入参数,然后在测试函数中调用参数 2.如果不使用超继承,还可以使用ddt,这样就可以给用例传参了 3.当用例的参数不超过5个时,可以使用unpack,超过5个后,不建议使用ddt,而应该直接通过索引取参数 """ # ddt----------------------------- test_data = [1, 3] # @ddt # 装饰测试类 # class TestMath(unittest.TestCase): # # @data(*test_data) # 装饰测试用例,传入测试数据,这里会把列表的子元素分别取出来 # def test_print_data(self, item): # 使用ddt后,可以给用例传参,有多少个子元素,就会执行几次用例,一个子元素对应一个用例 # print("item: ", item) # ---------------------------------------------------- # 参数前加*,脱外套 # t = [3, 6] # print(*t) # ----------------------------------------------------- # 给数据加*后,会脱掉一层外套,数据被拆分, # 有几个数据就会执行几次测试用例。和遍历是一样的效果 # test_data = [[1, 4], [2, 5]] # # # @ddt # 装饰测试类 # class TestMath(unittest.TestCase): # # @data(*test_data) # 装饰测试用例,传入数据,给数据脱外套 # def test_print_data(self, item): # print("item: ", item) # ------------------------------------------------------------- # 给用例传2个参数 # test_data = [[1, 4], [2, 6]] # # @ddt # class TestMath(unittest.TestCase): # @data(*test_data) # @unpack # 把拿到的数据,用逗号进行拆分,比如经过*test_data得到子元素[1, 4], [2, 6], 经过unpack后,会把[1,4]变成1和4,所以在用例中,需要两个参数来接收 # def test_print_data(self, a, b): # print("a: ", a) # print("b: ", b) # --------------------------------------------------- # 脱掉一层外套后的子元素个数必须相等,不然会报错,要么就设置默认值参数 # test_data = [[1, 2], [3, 4, 5]] # # @ddt # class TestMath(unittest.TestCase): # @data(*test_data) # @unpack # def test_print_data(self, a, b, c=None): # print("a: ", a) # print("b: ", b) # print("c: ", c) # ----------------------------------------------- # 子元素超过5个后不建议使用unpack # test_data = [[1, 3], [1, 2, 3, 4, 5, 6, 7]] # # # @ddt # class TestMath(unittest.TestCase): # @data(*test_data) # def test_print_data(self, item): # print("item: ", item) # -------------------------------------- # 对字典进行unpack时,测试用例中传入的参数名要和字典的键名一样 # test_data = [{"num": 1, "name": "huihui"}, {"num": 2, "name": "haha"}] # # # @ddt # class TestMath(unittest.TestCase): # @data(*test_data) # @unpack # def test_print_data(self, num, name): # print("num: ", num) # print("name: ", name)
以上是关于unittest- 学习ddt的主要内容,如果未能解决你的问题,请参考以下文章