python模块03 --ddt数据驱动

自动化框架设计思想:

(1) 数据驱动测试:即英文单词Data-Driven Testing,简称DDT。

(2) 关键字驱动测试:即英文单词Keyword-Driven Testing,简称KDT。

(3) 业务流程测试:即英文单词Business Process Tesing,简称BPT。

(4) 页面对象模式:即英文单词Page Object Model,简称POM。

(5) 基于组件的测试:即英文单词Component-Based Testing,简称CBT。

本文介绍ddt数据驱动

1 DDT数据驱动

​        DDT(Date Driver Test),所谓数据驱动测试,简单来说就是由数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。通过使用数据驱动测试的方法,可以在需要验证多组数据测试场景中,使用外部数据源实现对输入输出与期望值的参数化,避免在测试中使用硬编码的数据,也就是测试数据和用例脚本代码分离。

​         DDT它其实就是一个装饰器,它会根据你传递进来的数据来决定要生成几个测试用例。

引入原因:许多数据集进行相同的测试。若一个用例一个测试集,则造成冗余,而且,每个数据集值创建不同的测试既耗时又效率低下 

1.1 优点:

  1. 代码复用率高:一个测试逻辑只需要写一次,可以多条测试数据复用,同时提高测试脚本的编写效率。
  2. 异常排查效率高:根据测试数据,每条数据生成一条测试用例,用例相互分离,一条失败的情况下不会影响其他测试用例。
  3. 代码可维护性高:简洁明了的测试框架,利于其他同事阅读,提高代码的可维护性。

1.2 常用

  • @ddt:装饰测试类
    • @ddt它做的事情其实就等同于这句代码:LoginTestCase = ddt(LoginTestCase),把具体的类名传给ddt,告诉ddt是这个测试用例类要使用数据驱动。
  • @data:装饰测试用例
    •  @data做的事情就是把测试数据作为一个参数传递给测试用例,一个数据对应生成一条测试用例,如果data里面有多个数据那么就对应生成多条测试用例。如果data里放的类似是元组、列表等这样的序列类型的数据,data会把他们当成是一个整体,即一个测试数据。
    • 如果想一次传递多个参数给测试用例,需要自行在脚本中对数据进行分解或者使用
  • @unpack:装饰测试用例
    • @unpack则是可以把序列类型的数据拆分为多个,以多个参数传给测试用例,但测试用例也需要定义同等数量的参数来接收。

1.3 @ddt:装饰测试类步骤:

  1. 安装:pip install ddt  
    ddt导入
    --安装:选择国内源 pip install -i https://mirrors.aliyun.com/pypi/simple
    --ddt导入时注意:项目当中不要有模块/文件命名成ddt
            ANS:重名到时引用的就是项目下的ddt模块,不是python的第三方包
    --尽量不要重名
  2. 导入 import ddt
  3. 测试类加上:@ddt.ddt
  4. 需要进行数据驱动的方法上加:@ddt.data(*cases)
  5. 测试用例方法用参数接收:def test_login(self, case_info):

import unittest
import ddt
def add(x, y):
    """简单数字加减"""
    if type(x) == int and type(y) == int:
        return x + y
    return  None

#1 写用例,可以写到excel,此处简略用列表,要确保和excel读取一致
cases = [
    {"x": 1,"y":2, "expected": 3},
    {"x": 10,"y":3, "expected": 13},
    {"x": -50,"y":2, "expected": -48}

]

#写测试用例方法
@ddt.ddt
class TestAdd(unittest.TestCase):

    @ddt.data(*cases)
    def test_add(self, case_info):
        expected = case_info['expected']
        actual = add(case_info['x'], case_info['y'])
        self.assertEqual(expected, actual)

#TODO: 一定要在空白行运行,不然会出现no test 报错
if __name__ == '__main__':
    unittest.main()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值