unittest使用数据驱动ddt
简介
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的更多相关文章
- unittest框架(三)unittest+yaml数据驱动
学习完了如何用yaml文件管理用例,如何进行单元测试,如何产生漂亮的测试报告,那么结合这几点,我们简单学习下unittest+yaml数据驱动来测试. 第一步:首先,我们建一个yaml文件,管理用例, ...
- python webdriver 测试框架-数据驱动DDT的例子
先在cmd环境 运行 pip install ddt 安装数据驱动ddt模块 脚本: #encoding=utf-8 from selenium import webdriver import un ...
- Python 数据驱动ddt 使用
准备工作: pip install ddt 知识点: 一,数据驱动和代码驱动: 数据驱动的意思是 根据你提供的数据来测试的 比如 ATP框架 需要excel里面的测试用例 代码驱动是必须得写代码 ...
- python之数据驱动ddt操作(方法二)
import unittestfrom ddt import ddt,unpack,datafrom selenium import webdriverfrom selenium.webdriver. ...
- python之数据驱动ddt操作(方法一)
下载ddt并安装 Pip install ddt 或者官网下载安装 http://ddt.readthedocs.io/en/latest/ https://github.com/txels/ddt ...
- 数据驱动——ddt
1: pip3 install ddt 2: @ddt 装饰 @data((2,3),(4,5)) 支持列表,元祖,字典 @unpack 解压数据 1 import unittest 2 from ...
- 数据驱动ddt
在设计用例的时候,有些用例操作过程是一样的,只是参数数据输入的不同,如果用例重复的去写操作过程会增加代码量,对于这种多组数据的测试用例,可以使用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载 ...
- Python Unittest与数据驱动
python中有一个装饰器类DDT,通过它我们可以复用代码,达到数据驱动测试的目的,该类的官方介绍可以参考 http://ddt.readthedocs.io/en/latest/index.html ...
- Python3数据驱动ddt
对于同一个方法执行大量数据的程序时,我们可以采用ddt数据驱动的方式,来对数据规范化整理及输出 一.需要使用python的ddt库,ddt,data,unpack方法 1.仅使用ddt和data,代码 ...
随机推荐
- spring5 源码深度解析----- 被面试官给虐懵了,竟然是因为我不懂@Configuration配置类及@Bean的原理
@Configuration注解提供了全新的bean创建方式.最初spring通过xml配置文件初始化bean并完成依赖注入工作.从spring3.0开始,在spring framework模块中提供 ...
- 1046 Shortest Distance (20 分)
1046 Shortest Distance (20 分) The task is really simple: given N exits on a highway which forms a si ...
- 2.1实现简单基础的vector
2.1实现简单基础的vector 1.设计API 我们参考下C++ <std> 库中的vector, vector中的api很多,所以我们把里面用的频率很高的函数实现; 1.1 new&a ...
- Spring源码分析之IOC的三种常见用法及源码实现(二)
Spring源码分析之IOC的三种常见用法及源码实现(二) 回顾上文 我们研究的是 AnnotationConfigApplicationContext annotationConfigApplica ...
- tf.split
tf.split(dimension, num_split, input):dimension的意思就是输入张量的哪一个维度,如果是0就表示对第0维度进行切割.num_split就是切割的数量,如果是 ...
- 像艺术家一样思考 Think Like an Artist
艺术家是如何获得灵感,如何找到自己的独特风格和主题的? 艺术家在绘画.写作.表演或歌唱前不会去征求谁的允许,而是随心而行 要想在数字时代获得满足感,我们需要变得有创造性 1.艺术家富有事业心 艺术家是 ...
- 虚拟机桥接模式下将虚拟IP设为静态IP
一:虚拟机设置桥接模式 1.进入虚拟机设置中将网络适配器设置成桥接模式,如下图 2.编辑--虚拟网络编辑器--选择桥接 3.如上图中桥接模式下的桥接到--将自动改成与本机匹配的虚拟网卡,本机虚拟网卡查 ...
- Python_文本的读写操作
[需求] 1. 获取文本内容,提取内容中的可用信息,对信息进行清洗等一系列处理 2. 算法输出一些内容,保存到文本文件中,便于使用 [函数] 在Python中open()函数是用来打开文件的,包括文本 ...
- PHP 利用闭包偷窥马对人类的想法
<?php /** * reference:http://www.php.net/manual/en/reflectionmethod.getclosure.php * Learn this a ...
- Cocos2d-x 学习笔记(15.3) EventDispatcher DirtyFlag 脏标记
1. 定义 用枚举定义脏标记的4种类型. enum class DirtyFlag { NONE = , FIXED_PRIORITY = << , SCENE_GRAPH_PRIORIT ...