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,代码 ...
随机推荐
- 关于5G目前形式的浅谈
目前市面上已经有十几款5G手机已经上市了,但是到2019年底的覆盖率还是非常的低,所以很多换机的用户可以再等一等,2020应该是出来的都是5G手机,也都是支持双模的NA/NSA的两种组网模式,因为工信 ...
- asp.net core 腾讯验证码的接入
asp.net core 腾讯验证码的接入 Intro 之前使用的验证码服务是用的极验验证,而且是比较旧的,好久之前接入的,而且验证码服务依赖 Session,有点不太灵活,后来发现腾讯也有验证码服务 ...
- hibernate之小白一
关于hibernate框架,以下是我自己的见解,每个人的理解各不同,希望各位读者根据自己的需要来查询自己想要的.以下我来给你们分享我学习hibernate的一些理论和实践: 首先我们来了解一下hibe ...
- 窥见云技术未来大势,腾讯云Techo开发者大会即将在京召开
云.物联网.5G.人工智能……一项项技术的突破带来了天翻地覆的变化,开发者们是如何一次次地进行天马行空的创意和极限突破?2019年11月6日-7日,由腾讯云主办的首届Techo开发者大会将在北京嘉里大 ...
- main(argc, char *argv[])
#include<stdio.h> int main(int argc, char *argv[]) { int i; ;i<argc;i++) { printf("arg ...
- Cobalt Strike之信息收集、木马钓鱼
System Profiler使用 System Profiler 模块,搜集目标的各类机器信息(操作系统版本,浏览器版本等) Attacks->web drive-by->System ...
- [BZOJ1694/1742/3074]The Cow Run 三倍经验
Description John养了一只叫Joseph的奶牛.一次她去放牛,来到一个非常长的一片地,上面有N块地方长了茂盛的草.我们可 以认为草地是一个数轴上的一些点.Joseph看到这些草非常兴奋, ...
- 移动端前端常见的触摸相关事件touch、tap、swipe
前端的很多事件在PC端和浏览器端可公用,但有些事件却只在移动端产生,如触摸相关的事件 本文整理了移动端常见的一些事件,包括原生支持的click.touch.tap.swipe事件,也有定义型的gest ...
- cmd 获取当前登录的用户和远程连接的用户
打开cmd 执行 quser 可以看到我有两个 会话 带> 是我当前的会话 rdp 是远程连接的会话 console 是本机操作 可以知道谁在连接你 状态是 唱片 就是未连接的意思 ...
- [解决]Hadoop 2.4.1 UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0
问题:UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0 我的系统 win7 64位 Hadoop ...