首页 > 其他 > 详细

数据驱动 --ddt

时间:2020-04-15 10:28:19      阅读:63      评论:0      收藏:0      [点我收藏+]
import unittest

from ddt import ddt,data,unpack

test_data = [[1,2],[3,4]]

@ddt   #装饰类
class TestMethod(unittest.TestCase):

    @data(test_data) #装饰方法
    def test_print(self,a):
        print(a)

返回结果为:

Ran 1 test in 0.001s

OK
[[1, 2], [3, 4]]

 

ddt 是第三方模块,需安装, pip install ddt

DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据)

通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,以元组,列表,字典等数据,需要自行在脚本中对数据进行分解或者使用unpack分解数据。

@data(a,b)

那么a和b各运行一次用例

 

 

传入的数据参数前加上*号,则是拆分,最多只能加一个*,多个*号无用

import unittest

from ddt import ddt,data,unpack

test_data = [[1,2],[3,4]]

@ddt
class TestMethod(unittest.TestCase):

    @data(*test_data)
    def test_print(self,a):
        print(a)

返回结果:

[1, 2]
[3, 4]


Ran 2 tests in 0.000s

OK

 

unpack是对拆分的每个元素以逗号进行再次拆分,方法的动态传参的个数要相对应

import unittest

from ddt import ddt,data,unpack

test_data = [[1,2],[3,4]]

@ddt
class TestMethod(unittest.TestCase):

    @data(*test_data)
    @unpack
    def test_print(self,a,b):
        print(a)
        print(b)

返回结果:

Ran 2 tests in 0.002s

OK
1
2
3
4

 

如果unpack要拆分的元素是列表,且列表内的元素个数不一致,如下:

import unittest

from ddt import ddt,data,unpack

test_data = [[1,2],[3,4,5]]

@ddt
class TestMethod(unittest.TestCase):

    @data(*test_data)
    @unpack
    def test_print(self,a,b,c=None):
        print(a)
        print(b)
        print(c)

返回结果:

1
2
None
3
4
5


Ran 2 tests in 0.001s

OK

 

如果unpack拆分是字典,方法的动态参数必须是字典的key,否则会报错

import unittest

from ddt import ddt,data,unpack

test_data = [{"no":1,"name":"lili"},
             {"no":2,"name":"godan"}]

@ddt
class TestMethod(unittest.TestCase):

    @data(*test_data)
    @unpack
    def test_print(self,no,name):
        print(no)
        print(name)

返回结果:

Ran 2 tests in 0.001s

OK
1
lili
2
godan

进程已结束,退出代码 0

 

数据驱动 --ddt

原文:https://www.cnblogs.com/lexus168/p/12703236.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!