简介

ddt(data driven test)数据驱动测试:由外部数据集合来驱动测试用例,适用于测试方法不变,但需要大量变化的数据进行测试的情况,目的就是为了数据和测试步骤的分离

由于unittest没有数据驱动的模块,所以主要使用ddt这个库,安装如下

pip install ddt

ddt包含类的装饰器ddt和常用的三个方法装饰器data(直接输入测试数据),file_data(可以从json或者yaml中获取测试数据),unpack(分解数据)

使用

1.单独几个数据的时候

import unittest
import ddt @ddt.ddt #在测试类定义之前使用:@ddt.ddt
class Mytest(unittest.TestCase): @ddt.data(1,2,3,4) #在测试用例定义之前使用:@ddt.data(测试数据)测试数据之间用逗号隔开
def test_1(self,a):
print(a) if __name__ == "__main__":
unittest.main()

结果

1
.2
.3
.4
.
----------------------------------------------------------------------
Ran 4 tests in 0.013s OK

2.数据组是列表的时候,拆分成单个元素

import unittest
import ddt value = [(1,2),(3,4),(5,6)] @ddt.ddt #在测试类定义之前使用:@ddt.ddt
class Mytest(unittest.TestCase): @ddt.data(*value) #在测试用例定义之前使用:@ddt.data(测试数据),*就是python中参数分解,将列表分为一个个元素依次传入
def test_1(self,a):
print(a) if __name__ == "__main__":
unittest.main()

结果

(1, 2)
.(3, 4)
.(5, 6)
.
----------------------------------------------------------------------
Ran 3 tests in 0.004s OK

如果要将上面列表里面的元组分解成单个元素,使用unpack

import unittest
import ddt value = [(1,2),(3,4),(5,6)] @ddt.ddt #在测试类定义之前使用:@ddt.ddt
class Mytest(unittest.TestCase): @ddt.data(*value) #在测试用例定义之前使用:@ddt.data(测试数据),*就是python中参数分解,将列表分为一个个元素依次传入
@ddt.unpack #单独取value中[1],分解成1,2传入
def test_1(self,a,b):
print(a,b) if __name__ == "__main__":
unittest.main()

结果

1 2
.3 4
.5 6
.
----------------------------------------------------------------------
Ran 3 tests in 0.010s OK

3.数据组是字典的时候

import unittest
import ddt value = {"a":1,"b":2} @ddt.ddt
class Mytest(unittest.TestCase): @ddt.data(value)
@ddt.unpack
def test_1(self,a,b):
print(a,b) if __name__ == "__main__":
unittest.main()

结果

1 2
.
----------------------------------------------------------------------
Ran 1 test in 0.004s OK

4.使用json或yaml文件

json文件

{
"test1":1,
"test2":"abc",
"test3":[1,2,3]
}

代码

import unittest
import ddt @ddt.ddt
class Mytest(unittest.TestCase): @ddt.file_data("tmp.json")
def test_1(self,a):
print(a) if __name__ == "__main__":
unittest.main()

结果

1
.abc
.[1, 2, 3]
.
----------------------------------------------------------------------
Ran 3 tests in 0.014s OK

unittest使用数据驱动ddt的更多相关文章

  1. unittest框架(三)unittest+yaml数据驱动

    学习完了如何用yaml文件管理用例,如何进行单元测试,如何产生漂亮的测试报告,那么结合这几点,我们简单学习下unittest+yaml数据驱动来测试. 第一步:首先,我们建一个yaml文件,管理用例, ...

  2. python webdriver 测试框架-数据驱动DDT的例子

    先在cmd环境 运行 pip install ddt 安装数据驱动ddt模块  脚本: #encoding=utf-8 from selenium import webdriver import un ...

  3. Python 数据驱动ddt 使用

    准备工作: pip install ddt 知识点: 一,数据驱动和代码驱动: 数据驱动的意思是  根据你提供的数据来测试的  比如 ATP框架 需要excel里面的测试用例 代码驱动是必须得写代码  ...

  4. python之数据驱动ddt操作(方法二)

    import unittestfrom ddt import ddt,unpack,datafrom selenium import webdriverfrom selenium.webdriver. ...

  5. python之数据驱动ddt操作(方法一)

    下载ddt并安装 Pip install ddt 或者官网下载安装 http://ddt.readthedocs.io/en/latest/ https://github.com/txels/ddt ...

  6. 数据驱动——ddt

    1: pip3 install ddt 2: @ddt 装饰 @data((2,3),(4,5)) 支持列表,元祖,字典 @unpack 解压数据   1 import unittest 2 from ...

  7. 数据驱动ddt

    在设计用例的时候,有些用例操作过程是一样的,只是参数数据输入的不同,如果用例重复的去写操作过程会增加代码量,对于这种多组数据的测试用例,可以使用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载 ...

  8. Python Unittest与数据驱动

    python中有一个装饰器类DDT,通过它我们可以复用代码,达到数据驱动测试的目的,该类的官方介绍可以参考 http://ddt.readthedocs.io/en/latest/index.html ...

  9. Python3数据驱动ddt

    对于同一个方法执行大量数据的程序时,我们可以采用ddt数据驱动的方式,来对数据规范化整理及输出 一.需要使用python的ddt库,ddt,data,unpack方法 1.仅使用ddt和data,代码 ...

随机推荐

  1. spring5 源码深度解析----- 被面试官给虐懵了,竟然是因为我不懂@Configuration配置类及@Bean的原理

    @Configuration注解提供了全新的bean创建方式.最初spring通过xml配置文件初始化bean并完成依赖注入工作.从spring3.0开始,在spring framework模块中提供 ...

  2. 1046 Shortest Distance (20 分)

    1046 Shortest Distance (20 分) The task is really simple: given N exits on a highway which forms a si ...

  3. 2.1实现简单基础的vector

    2.1实现简单基础的vector 1.设计API 我们参考下C++ <std> 库中的vector, vector中的api很多,所以我们把里面用的频率很高的函数实现; 1.1 new&a ...

  4. Spring源码分析之IOC的三种常见用法及源码实现(二)

    Spring源码分析之IOC的三种常见用法及源码实现(二) 回顾上文 我们研究的是 AnnotationConfigApplicationContext annotationConfigApplica ...

  5. tf.split

    tf.split(dimension, num_split, input):dimension的意思就是输入张量的哪一个维度,如果是0就表示对第0维度进行切割.num_split就是切割的数量,如果是 ...

  6. 像艺术家一样思考 Think Like an Artist

    艺术家是如何获得灵感,如何找到自己的独特风格和主题的? 艺术家在绘画.写作.表演或歌唱前不会去征求谁的允许,而是随心而行 要想在数字时代获得满足感,我们需要变得有创造性 1.艺术家富有事业心 艺术家是 ...

  7. 虚拟机桥接模式下将虚拟IP设为静态IP

    一:虚拟机设置桥接模式 1.进入虚拟机设置中将网络适配器设置成桥接模式,如下图 2.编辑--虚拟网络编辑器--选择桥接 3.如上图中桥接模式下的桥接到--将自动改成与本机匹配的虚拟网卡,本机虚拟网卡查 ...

  8. Python_文本的读写操作

    [需求] 1. 获取文本内容,提取内容中的可用信息,对信息进行清洗等一系列处理 2. 算法输出一些内容,保存到文本文件中,便于使用 [函数] 在Python中open()函数是用来打开文件的,包括文本 ...

  9. PHP 利用闭包偷窥马对人类的想法

    <?php /** * reference:http://www.php.net/manual/en/reflectionmethod.getclosure.php * Learn this a ...

  10. ‎Cocos2d-x 学习笔记(15.3) EventDispatcher DirtyFlag 脏标记

    1. 定义 用枚举定义脏标记的4种类型. enum class DirtyFlag { NONE = , FIXED_PRIORITY = << , SCENE_GRAPH_PRIORIT ...