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接口自动化内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python + Requests + Unittest接口自动化测试实例分析

    本文实例讲述了Python + Requests + Unittest接口自动化测试.分享给大家供大家参考,具体如下: 1. 介绍下python的requests模块 Python Requests快速入门 :http://cn.python-requests.org/zh_CN/latest/ 想必会Python基础的小伙伴们一看就懂了 2. Requests接口自动化测试: 2.1 如何利用这么利器进行接口测试,请看小demo: # -*- coding:utf-8 -* import re

  • Python+unittest+requests+excel实现接口自动化测试框架

    环境:python3 + unittest + requests Excel管理测试用例, HTMLTestRunner生成测试报告 测试完成后邮件发送测试报告 jsonpath方式做预期结果数据处理,后期多样化处理 后期扩展,CI持续集成 发送邮件效果: 项目整体结构: common模块代码 class IsInstance: def get_instance(self, value, check): flag = None if isinstance(value, str): if chec

  • 基于Python的接口自动化unittest测试框架和ddt数据驱动详解

    引言 在编写接口自动化用例时,我们一般针对一个接口建立一个.py文件,一条接口测试用例封装为一个函数(方法),但是在批量执行的过程中,如果其中一条出错,后面的用例就无法执行,还有在运行大量的接口测试用例时测试数据如何管理和加载.针对测试用例加载以及执行控制,python语言提供了unittest单元测试框架,将测试用例编写在unittest框架下,使用该框架可以单个或者批量加载互不影响的用例执行及更灵活的执行控制,对于更好的进行测试数据的管理和加载,这里我们引入数据驱动的模块:ddt,测试数据和

  • python+unittest+requests实现接口自动化的方法

    前言: Requests简介 Requests 是使用Apache2 Licensed许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能,但是它的 API 有点落后了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务. 总之,大家建议大家用Requests吧. Requests的官方文档:http://cn.python-requests.org

  • Python+unittest+requests 接口自动化测试框架搭建教程

    一.Python+unittest+requests+HTMLTestRunner 完整的接口自动化测试框架搭建_00--框架结构简解 首先配置好开发环境,下载安装Python并下载安装pycharm,在pycharm中创建项目功能目录.如果不会的可以百度Google一下,该内容网上的讲解还是比较多比较全的! 大家可以先简单了解下该项目的目录结构介绍,后面会针对每个文件有详细注解和代码. common: --configDb.py:这个文件主要编写数据库连接池的相关内容,本项目暂未考虑使用数据库

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

    前面一篇我们已经把unittest的常用用法都已经讲过了,可能很多小伙伴有个疑问,unittest框架怎么做数据驱动呢?这节我们就来学习一下. 1.unittest 没有自带数据驱动功能. 所以如果使用unittest,同时又想使用数据驱动,那么就可以使用DDT来完成. DDT是 "Data-Driven Tests"的缩写. 资料:http://ddt.readthedocs.io/en/latest/ 2.什么是ddt? 测试步骤相同,代码一样,测试数据不同,当我们输入一组测试数据

  • Python接口自动化浅析unittest单元测试原理

    目录 一.单元测试三连问 1.什么是单元测试? 2.为什么要做单元测试? 3.怎么做单元测试? 二.unittest模块说明 1.unittest简介 2.unittest组成 1.TestCase(测试用例): 2.TestSuite(测试套件): 3.TestLoader(测试用例加载器): 4.TextTestRunner(执行测试用例): 5.Test Fixture(测试环境数据准备和清理): 3.unittest核心工作原理 三.unittest单元测试 1.实现思路 2.使用介绍

  • Python接口自动化浅析登录接口测试实战

    目录 1.什么是接口? 那么,接口测试和功能测试的区别在哪呢? 2.如何开展接口测试? 3.如何设计接口用例? 1.获取接口文档 Fiddler 2.分析接口文档的接口,提取测试点 3.接口测试用例设计思路 4.接口测试其他范围 接口业务测试 接口的性能测试 接口安全测试 在项目下新建一个文件夹common 编写登录接口用例,调用封装的请求类. 对于用例的一些总结: 4.接口测试用例实战 在上一篇Python接口自动化测试系列文章:Python接口自动化浅析unittest单元测试原理,主要介绍

  • Python接口自动化浅析数据驱动原理

    在上一篇Python接口自动化测试系列文章:Python接口自动化浅析登录接口测试实战,主要介绍接口概念.接口用例设计及登录接口测试实战. 以下主要介绍使用openpyxl模块操作excel及结合ddt实现数据驱动. 在此之前,我们已经实现了用unittest框架编写测试用例,实现了请求接口的封装,这样虽然已经可以完成接口的自动化测试,但是其复用性并不高. 我们看到每个方法(测试用例)的代码几乎是一模一样的,试想一下,在我们的测试场景中, 一个登录接口有可能会有十几条到几十条测试用例,如果每组数

  • Python接口自动化浅析logging封装及实战操作

    在上一篇Python接口自动化测试系列文章:Python接口自动化浅析logging日志原理及模块操作流程,主要介绍日志相关概念及logging日志模块的操作流程. 而在此之前介绍过yaml封装,数据驱动.配置文件.日志文件等独立的功能,我们将这些串联起来,形成一个完整的接口测试流程. 以下主要介绍将logging常用配置放入yaml配置文件.logging日志封装及结合登录用例讲解日志如何在接口测试中运用. 一.yaml配置文件 将日志中的常用配置,比如日志器名称.日志器等级及格式化放在配置文

  • Python接口自动化浅析如何处理动态数据

    在上一篇Python接口自动化测试系列文章:Python接口自动化浅析logging封装及实战操作,主要介绍如何提取token.将token作为类属性全局调用及充值接口如何携带token进行请求. 以下主要介绍:接口自动化过程中,动态数据如何生成.动态数据与数据库数据进行对比并替换. 一.应用场景F 注册接口参数需要手机号,手机号如何动态生成? 生成的手机号如何与数据库数据进行对比? 未注册的手机号如何替换用例数据中的手机号? 二.动态手机号处理思路 编写函数,生成随机的手机号: 将生成的手机号

  • Python接口自动化浅析yaml配置文件原理及用法

    目录 一.yaml介绍及使用 01 yaml简介 02 yaml语法规则 03 yaml数据结构 对象 数组 纯量 二.yaml配置文件的使用 01 yaml配置文件准备 02 yaml配置文件格式校验 三.yaml配置文件读写 01 安装pyYaml 02 yaml模块源码解析 load: dump: 03 读写yaml配置文件 在上一篇Python接口自动化测试系列文章:Python接口自动化浅析数据驱动原理,主要介绍openpyxl操作excel,结合ddt实现数据驱动. 在自动化过程中,

  • Python接口自动化浅析如何处理接口依赖

    在前面的Python接口自动化测试系列文章:Python接口自动化浅析logging封装及实战操作, 其中介绍了将logging常用配置放入yaml配置文件.logging日志封装及结合登录用例讲解日志如何在接口测试中运用. 以下主要介绍如何提取token.将token作为类属性全局调用及充值接口如何携带token进行请求. 一.场景说明 在面试接口自动化时,经常会问,其他接口调用的前提条件是当前用户必须是登录状态,如何处理接口依赖? 在此之前我们介绍过session管理器保存会话状态. 如果接

  • Python接口自动化 之用例读取方法总结

    目录 1. Python第三方库xlrd xlrd代码演示 2. Python第三方库pandas pandas代码演示 3. Python第三方库yaml yaml代码演示 总结 前言: 在软件测试中,为项目编写接口自动化用例已成为测试人员常驻的测试工作.本文以python为例,基于笔者曾使用过的三种用例数据读取方法:xlrd.pandas.yaml,下面简要地介绍下它们的使用方法及简单分析. 1. Python第三方库xlrd xlrd模块可用于读取excel文档,是一种最常用的用例读取方式

  • python接口自动化框架实战

    python接口测试的原理,就不解释了,百度一大堆. 先看目录,可能这个框架比较简单,但是麻雀虽小五脏俱全. 各个文件夹下的文件如下: 一.理清思路 我这个自动化框架要实现什么 1.从excel里面提取测试用例 2.测试报告的输出,并且测试报告得包括执行的测试用例的数量.成功的数量.失败的数量以及哪条成功了,失败的是哪一个,失败的原因是什么:测试结果的总体情况通过图表来表示. 3.测试报告用什么形式输出,excel,还是html,还是其他的,这里我选择了excel 4.配置文件需要配置什么东西

随机推荐