unittest2之数据驱动(ddt)

数据驱动介绍

  • 数据驱动即通过改变测试数据(即对测试数据进行参数化),来驱动测试的执行。在测试的过程中,我们经常会遇到这种场景:测试的步骤是一样的,只是使用数据不同,这种情况就可以使用数据驱动,从而实现了数据和代码的分离,减少了代码的冗余。
  • 例如:
    百度搜索的测试,我们需要执行以下测试用例
    搜索电影
    搜索热点新闻

DDT实现数据驱动

  1. DDT介绍
    ddt是“Data-Driven Tests”的缩写,是unittest中实现数据驱动的主要方式之一,它主要包括如下的装饰器:

     @ddt 标记测试类,支持DDT数据驱动
     @data 标记测试用例,传递参数
     @unpack 当@data中的参数是元组、列表时,用于分割序列中的元素
     @file_data 标记测试用例,传递文件,支持yaml和json文件
    
  2. DDT的使用前准备

    安装ddt工具,并导包

     安装ddt  pip install ddt
     导包 from unittest2 import ddt,data,unpack,file_data
    

3.使用DDT传递数据 — 直接传入参数

  • 用例只有一个参数的情形:
    @ddt#在测试类前使用ddt修饰器class DdtDemo(unittest.TestCase):
    直接传入参数@data(“zhangs”,“lisi”,“wangw”)
    在用例前使用@data传参deftest_login(self,user):
    用例只有一个参数:user print(“{}登录成功”.format(user))
    在这里插入图片描述

  • 用例中有多个参数 — 必须使用@unpack

    • 没有使用unpack的情形
      在这里插入图片描述
    • 使用unpack对每次传入的参数(序列参数),进行拆包处理(即分割后在传给用例中对应的形参)在这里插入图片描述
  • 传入一个序列(元组、列表)

    • 传入序列时,必须使用*拆包,否则会将会整个数据作为一个整体传入
      没有拆包时,如下:
      在这里插入图片描述
    • 传入时使用*拆包时,如下:在这里插入图片描述
  • @unpack和*的区别

    很多初学者一直弄不清楚*和@unpack修饰器的区别,其实很简单:
      *是对传入的序列进行拆包,拆包后将元素依次传给测试用例,表示用例执行的次数
      @unpack是对每次传入用例的参数进行拆包,拆包后将元素依次传给用例的每个参数,表示执行每次用例时的参数
    
  • 举例在这里插入图片描述

4.使用DDT传递数据— 传入文件

使用@file_data修饰器可以直接读取文件,支持yaml和json两种格式

  • 一个形参的情形
    yaml文件在这里插入图片描述

    代码实例在这里插入图片描述

  • 多个形参的情形
    注意事项:yaml文件中key和用例形参名必须保持一致
    yaml文件在这里插入图片描述

代码实例在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值