python模块 — ddt

1、写在前言

官网地址:Welcome to DDT’s documentation! — DDT 1.4.4 documentation

源码地址:https://github.com/datadriventests/ddt

2、应用场景分析

DDT (Data-Driven Tests) allows you to multiply one test case by running it with different test data, and make it appear as multiple test cases.

我们在unittest单元测试框架中定义一个测试登录功能的方法,登录场景可以有很多种,如果一个场景写一个方法的话,这样代码量比较多、不利于后续的维护工作。这个时候我们就可以引入ddt模块,把我们的不同场景的测试数据写入到一个csv文件或者ymal文件中,然后在我们写的登录方法中去读取测试数据,这样我们就可以实现一个testcase来跑不同的测试数据。

3、用法学习

DDT由一个类装饰器ddt(用于您的TestCase子类)和两个方法装饰器(用于要进行乘法的测试)组成:

  • data:包含的参数数量与要提供给测试的值一样多。

  • file_data:将从JSON或YAML文件加载测试数据。

(1)使用@data()方法装饰器:

  • 这个地方要注意data()方法传入的数据类型
import unittest
from ddt import ddt,data

data1={
    "start": 0,
    "end": 2,
    "value": 1
    }
data2= {
    "start": -2,
    "end": 0,
    "value": -1
    }

@ddt
class TestDDT(unittest.TestCase):

    @data(data1,data2)
    def test_get_data(self,values):
        #将data()值传给values
        print('values==',values)


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

(2)使用@file_data()方法装饰器加载json文件测试数据

import unittest
from ddt import ddt,file_data


@ddt
class DDTTest(unittest.TestCase):

    @file_data('./data.json')
    def test_get_data(self,start,end,value):

        #将从json文件中读到的数据存放到values中
        values={
            'values_start':start,
            'values_end':end,
            'vlues_value':value
        }

        print('values=',values)


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

其中json文件格式:

{
    "positive_integer_range": {
        "start": 0,
        "end": 2,
        "value": 1
    },
    "negative_integer_range": {
        "start": -2,
        "end": 0,
        "value": -1
    }
}

(3)使用@file_data()方法装饰器加载yaml文件测试数据


import unittest
from ddt import ddt,file_data


@ddt
class DDTTest(unittest.TestCase):

    @file_data('./data.yaml')
    def test_get_data(self,start,end,value):

        #将从yaml文件中读到的数据存放到values中
        values={
            'values_start':start,
            'values_end':end,
            'vlues_value':value
        }

        print('values=',values)


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

其中yaml文件格式(注意有空格):

positive_integer_range: {start: 0,end: 2,value: 1}
negative_integer_range: {start: -2,end: 0,value: -1}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值