unittest使用ddt数据驱动

ddt使用

1.data装饰器

需要先将@ddt修饰在当前的测试类中
@data装饰器修饰在测试用例

查看源码可以看到,装饰器data接收一个元祖参数
image
代码:

@ddt
class Login(unittest.TestCase):

    @data(1, 2, 3, 4)
    def test_login(self, value):
        print("\n***********用例执行***********")
        print("value: {}".format(value))

执行结果:
image

2. unpack装饰器

修饰在用例上,用于解包,元祖、列表等有序对象,
如下:将每个元祖或者列表中的每个元素解包,在方法上接收对应数量的参数

    @data((1, 2, 3), (5, 6, 7))
    @unpack
    def test_login(self, value1, value2, value3):
        print('\n用例参数1: {}'.format(value1))
        print('用例参数2: {}'.format(value2))
        print('用例参数3: {}'.format(value3))

执行结果:
image

注:
字典虽然是无序对象,但是可以通过key映射获取对应的值,使用如下:
用例接收两个参数name, age就可以映射data上字典上的key对应的value

    @data({"name": "张三", "age": 22},
          {"name": "李四", "age": 25})
    @unpack
    def test_login(self, name, age):
        print("\n***********用例执行***********")
        print("name: {}".format(name))
        print("age: {}".format(age))

执行结果:
image

3.file_data注解

3.1 读取yaml配置文件的方式,作为数据驱动

代码:

    @file_data("./data.yaml")
    @unpack
    def test_login(self, name, age):
        print("\n***********用例执行***********")
        print("name: {}".format(name))
        print("age: {}".format(age))

data.yaml配置文件:
yaml语法学习

- #- 表示数据为列表,需要有基本yaml语法知识
  name: 张三
  age: 18
-
  name: 李四
  age: 15

结果:
image

3.2 读取json配置文件的方式,作为数据驱动

代码:

@ddt
class Login(unittest.TestCase):

    @file_data("./data.json")
    @unpack
    def test_login(self, name, age):
        print("\n***********用例执行***********")
        print("name: {}".format(name))
        print("age: {}".format(age))

json配置文件:
json语法学习

{
  "test1": {
      "name": "张三",
      "age": 18
  },
  "test2": {
      "name": "李四",
      "age":  22
  }
}

结果:
image

posted @ 2020-07-14 04:26  silence022  阅读(62)  评论(0)    收藏  举报