Python接口自动化系列之unittest结合ddt的使用教程详解

 更新时间:2021年02月23日 14:22:34   作者:那你多喝点水  
这篇文章主要介绍了Python接口自动化系列之unittest结合ddt的使用教程详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

前面一篇我们已经把unittest的常用用法都已经讲过了,可能很多小伙伴有个疑问,unittest框架怎么做数据驱动呢?这节我们就来学习一下。
1、unittest 没有自带数据驱动功能。
所以如果使用unittest,同时又想使用数据驱动,那么就可以使用DDT来完成。
DDT是 “Data-Driven Tests”的缩写。
资料:http://ddt.readthedocs.io/en/latest/
2、什么是ddt?
测试步骤相同,代码一样,测试数据不同,当我们输入一组测试数据的时候,测试框架会自动生成独立的多个测试用例的方法,这就是ddt。(个人理解)
注意:ddt不等于数据驱动,ddt只是实现了数据驱动思想

首先,我们需要下载包,下载方法如下:

在这里插入图片描述

然后,我们开始学习

import unittest
import ddt
# 首先我们导入ddt

# 我们还是哪官网这个加法方法来做例子,首先我们准备一些测试数据

data = [(1,2,3),
    (1,3,4),
    (1,4,5)]

# 装饰类,也就是继承自TestCase的类,可以理解为给这个类戴了个帽子
@ddt.ddt
class IntegerArithmeticTestCase(unittest.TestCase):
  # 装饰测试方法。参数是一系列的值
  # 注意要加这个*,多组数据,@ddt.data(*data)相当于@ddt.data((1,2,3),(1,3,4),(1,4,5))
  @ddt.data(*data)
  # 每次运行都会从 data中取出一组数据,动态生成一个独立的测试用例方法
  def testAdd(self,test_data):
    print(test_data)
    self.assertEqual((test_data[0] + test_data[1]), test_data[2])
'''
测试用例方法名生成规则
使用ddt后,会产生一个新的测试用例方法名:之前的测试用例方法名_ordinal_data
之前的测试用例方法名:即定义的测试用例方法名。比如def test_large(),这里就是test_large
ordinal:整数,从1开始递加。
data:如果传递过来的数据存在__name__属性,则这里就是该数据的__name__值。如果未定义__name__属性,ddt会尽量将传递过来的数据转化为python标识符,作为data显示。比如(3,2)就转化为3_2。
需要注意的是,如果数据是字典,则这里就是字典的key。
'''
if __name__ == '__main__':
  unittest.main(verbosity=2)

我么执行看一下结果:

在这里插入图片描述

在看一下HTML的结果报告:

在这里插入图片描述

3、下面我们就说一下在实际框架中ddt是如何使用的
实际框架中只不过测试数据不是放在代码里,代码要做数据分离,实际是把数据放在Excel,或者yaml,或者json文件中,等等吧,作者实际框架中用的最多的都是这三种。
1)我么你先看一下测试数据放在json中,先建一个json文件

在这里插入图片描述

import unittest
import ddt


# 装饰类,也就是继承自TestCase的类,可以理解为给这个类戴了个帽子
@ddt.ddt
class IntegerArithmeticTestCase(unittest.TestCase):
  # 装饰测试方法。参数是文件名。文件可以是json 或者 yaml类型。
  # 注意,如果文件以”.yml”或者”.yaml”结尾,ddt会作为yaml类型处理,其他所有文件都会作为json文件处理。
  # 如果文件中是列表,每个列表的值会作为测试用例参数,同时作为测试用例方法名后缀显示。
  # 如果文件中是字典,字典的key会作为测试用例方法的后缀显示,字典的值会作为测试用例参数
  @ddt.file_data('d1.json')
  @ddt.unpack
  # 每次运行都会从 data中取出一组数据,动态生成一个独立的测试用例方法
  def testAdd(self,first,second,values):
    self.assertEqual( (first+ second), values)

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

执行查看结果如下:

在这里插入图片描述

2)我么你在看一下测试数据放在yaml中,先建一个yaml文件

到此这篇关于Python接口自动化系列之unittest结合ddt的使用教程详解的文章就介绍到这了,更多相关Python接口自动化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python实现各种插值法(数值分析)

    python实现各种插值法(数值分析)

    这篇文章主要介绍了python实现各种插值法(数值分析),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 深入理解Python中字典的键的使用

    深入理解Python中字典的键的使用

    这篇文章主要介绍了深入理解Python中字典的键的使用,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • Django使用Celery实现异步发送邮件

    Django使用Celery实现异步发送邮件

    这篇文章主要为大家详细介绍了Django如何使用Celery实现异步发送邮件的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-04-04
  • Django 使用VScode 创建工程的详细步骤

    Django 使用VScode 创建工程的详细步骤

    这篇文章主要介绍了Django 使用VScode 创建工程,创建Django 项目,可以和虚拟环境放在同一目录,也可以放在虚拟环境的文件夹里,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Python创建Getter和Setter的方法详解

    Python创建Getter和Setter的方法详解

    Getters 和 Setters 是帮助我们设置类变量或属性而无需直接访问的方法,这篇文章主要和大家介绍了如何在Python中创建Getter和Setter,需要的可以参考下
    2023-10-10
  • python爬虫刷访问量 2019 7月

    python爬虫刷访问量 2019 7月

    这篇文章主要介绍了python爬虫刷访问量 2019 7月,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 手把手教你如何使python变为可执行文件

    手把手教你如何使python变为可执行文件

    对于exe可执行文件,相信大家都不陌生,下面这篇文章主要给大家介绍了关于如何使python变为可执行文件的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • 如何安装2019Pycharm最新版本(详细教程)

    如何安装2019Pycharm最新版本(详细教程)

    这篇文章主要介绍了如何安装2019Pycharm最新版本(详细教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • python使用scapy模块实现ping扫描的过程详解

    python使用scapy模块实现ping扫描的过程详解

    这篇文章主要介绍了python使用scapy模块实现ping扫描的过程详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Python模块zipfile原理及使用方法详解

    Python模块zipfile原理及使用方法详解

    这篇文章主要介绍了Python模块zipfile原理及使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08

最新评论