自动化测试ddt的使用

一 ddt基础知识

(数据驱动测试)允许您通过使用不同的测试数据运行一个测试用例,并使其显示为多个测试用例。

参考文档:https://ddt.readthedocs.io/en/latest/

1.  ddt

    类装饰器,用于TestCase的子类test方法。

2. 1  data

    方法装饰器(数据),包含与要提供给测试的值一样多的参数。

2. 2  file_data

    方法装饰器(数据),将从JSON或YAML文件加载测试数据。

    只有以“.yml”和“.yaml”结尾的文件才会作为YAML文件加载。所有其他文件都作为JSON文件加载。

3. unpack

    额外的装饰器,自动将元组和列表解压缩为多个参数,并将字典解压缩为多个关键字参数。

 

二 ddt在自动化测试中的运用

(1)单个参数(data)

import unittest
from ddt import ddt,data,unpack

#需要测试的代码
def add(a):
    return (a+1)

#设置值
data1=[{'a':1,'b':2},{'a':1,'b':2},{'a':1,'b':2},{'a':1,'b':2}]

#使用ddt对被测试代码进行批量测试
@ddt
class TestDDT(unittest.TestCase):

    @data(*data1)
    def test_add(self,data1):
        res=add(data1["a"])
        assert res==data1["b"]

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

(2)多个参数(data)

import unittest
from ddt import ddt,data,unpack

def add2(a,b):
    return (a+b)

data2=[[{'a':1,'b':1},2],[{'a':1,'b':2},3]]

@ddt
class TestDDT(unittest.TestCase):

    @data(*data2)
    @unpack
    def test_add2(self, x,y):
        res = add2(x["a"],x["b"])
        print(res)
        assert res == y


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

 (3)测试文件(file_data.json)

test_data.json

{
  "test1":{"a":1,"b":1},
  "test2":{"a":2,"b":2}
}

testcase.py 

import unittest
from ddt import ddt,file_data

def add(a,b):
    return a+b

@ddt
class TestCase(unittest.TestCase):

    @file_data('test_data.json')
    def test_add1(self,a,b):
        r=add(a,b)
        print(r)

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

你可能感兴趣的:(学习中)