python ddt 实现数据驱动
ddt 是第三方模块,需安装, pip install ddt
DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据)@data和@file_data
通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,以元组,列表,字典等数据,需要自行在脚本中对数据进行分解或者使用unpack分解数据。
@data(a,b)
那么a和b各运行一次用例
@data([a,d],[c,d])
如果没有@unpack,那么[a,b]当成一个参数传入用例运行
如果有@unpack,那么[a,b]被分解开,按照用例中的两个参数传递
import unittest
from ddt import ddt,data,unpack@ddt
class MyTesting(unittest.TestCase):def setUp(self):print('this is the setUp')@data([1,2,3])def test_1(self,value):print(value)@data([3,2,1],[5,3,2],[10,4,6])@unpackdef test_minus(self,a,b,expected):actual = int(a) - int(b)expected = int(expected)self.assertEqual(actual, expected)@data([2,3],[4,5])def test_compare(self,a,b):self.assertEqual(a,b)def tearDown(self):print('this is tearDown')if __name__ == '__main__':unittest.main(verbosity=2)
结果分析:
1. test_1的测试结果是ok的, 因为 [1,2,3] 作为一个整体传给value,所有value 打印的值是[1,2,3]
test_1_1__1__2__3_ (__main__.MyTesting) ... ok test_compare_1__2__3_ (__main__.MyTesting) ... ERROR [1, 2, 3]
2. test_minus的测试结果也是ok的,由于在@data(...)下加了@unpack, 代表会把数据分解,得到3组测试数据,分别为:
1.[3,2,1] 2.[5,3,2] 3.[10,4,6]
test_minus_1__3__2__1_ (__main__.MyTesting) ... ok test_minus_2__5__3__2_ (__main__.MyTesting) ... ok test_minus_3__10__4__6_ (__main__.MyTesting) ... ok
3. test_compare的测试结果是fail的,由于没有加@unpack, 虽然还是会被理解成2组测试数据,但是[2,3]作为一个整体被传给了a, 因为b就没有值传入了,所以一执行后报了 TypeError: test_compare() missing 1 required positional argument: 'b' 这句错。
@data()里的数据组可以为元祖,list,字典
@ddt
class MyTest(unittest.TestCase):@data((8, 6), (4, 0), (15, 6))@unpackdef test_tuples(self, first, second):self.assertTrue(first > second)@data([30, 29], [40, 30], [5, 3])@unpackdef test_list(self, first, second):self.assertTrue(first > second)@data({'first': 1, 'second': 3, 'third': 5},{'first': 4, 'second': 7, 'third': 8})@unpackdef test_dicts(self, first, second, third):self.assertTrue(first < second < third)if __name__ == '__main__':unittest.main(verbosity=2)
通过json文件驱动
@ddt
class MyTest(unittest.TestCase):@file_data('test_data_list.json')def test_data_list(self,value):print(value)@file_data('test_data_dict.json')def test_data_dict(self,value):print(value)
@file_data('test_data2.yml')
def test_data_yaml(self,value):print(value)print(type(value))
[{'pass': {'case1': {'password': '001', 'username': 'aa'}, 'case2': {'password': '002', 'username': 'bb'}}}, {'fail': {'case3': {'password': '003', 'username': 'cc'}}}]
<class 'list'>
python ddt 实现数据驱动相关推荐
- python ddt mysql_Python数据驱动DDT的应用
原标题:Python数据驱动DDT的应用 在开始之前,我们先来明确一下什么是数据驱动,在百度百科中数据驱动的解释是:数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把 ...
- 案例驱动python编程入门-python ddt数据驱动实例代码分享
python ddt数据驱动最简实例 在接口自动化测试中,往往一个接口的用例需要考虑 正确的.错误的.异常的.边界值等诸多情况,然后你需要写很多个同样代码,参数不同的用例.如果测试接口很多,不但需要写 ...
- python 基于ddt实现数据驱动测试
这篇文章主要介绍了python 基于DDT实现数据驱动测试的方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下 简单介绍 ddt(date driver test),所谓数据驱 ...
- Unittest自动化测试框架教程(四)——Python中的数据驱动测试DDT
" 数据驱动测试DDT(Data Drivern test),是自动化测试领域优势中亮眼的闪光点,在unittest测试框架中对数据驱动更是提供了强大的支持,文章通过基础概念的引入,介绍了 ...
- python数据驱动:基于ddt的数据驱动测试
一.yaml文件的调用 二.csv文件的数据驱动 三.基于ddt的数据驱动测试 方法1: from selenium import webdriver import unittest from tim ...
- arcgis python脚本实现从界面选择输入输出_ArcGIS Python脚本实现数据驱动页面的批量出图...
这里讲一下如何通过Python脚本实现数据驱动页面的批量出图. 1 前提条件 首先要知道的是数据驱动页面的导出必须启用驱动页面,同时地图文档必须处于布局视图中. 2 具体实现 准备好批量出图的Pyth ...
- python中什么是数据驱动_利用Python如何实现数据驱动的接口自动化测试
前言 大家在接口测试的过程中,很多时候会用到对CSV的读取操作,本文主要说明Python3对CSV的写入和读取.下面话不多说了,来一起看看详细的介绍吧. 1.需求 某API,GET方法,token,m ...
- python语言百度百科-Python 语言下数据驱动DDT的应用
数据驱动测试的含义: 在百度百科上的解释是: 数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子.利用黑盒测试法进行动态测试时,需要测试软件产品 ...
- python使用ddt_python数据驱动ddt的使用
DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据),file_data(可以从json或者yaml中获取测试数据) @ddt.ddt添加在类的前面,@ddt.data添加在函数的前 ...
最新文章
- lambda函数详解
- python sqlite3的使用
- php获取两个输入框的值,PHP获取多个文本框中值的实例代码
- UML类图10分钟快速入门
- Java中的查找树和哈希表(一级)
- mixin network_基于Mixin Network的Go语言比特币开发教程 : 用 Mixin Messenger 机器人接受和发送比特币...
- sbe 详解_内部简单二进制编码(SBE)
- python选择排序从大到小_Python实现选择排序
- 创业产品经理需要懂技术吗?
- 记录——《C Primer Plus (第五版)》第七章编程练习第十一题
- android 图片编辑 画圈,Android种图片圆形化的三种方式
- 坐火车卧铺,到底是上、中、下哪个好?其实简单对比一下就知道了
- Bex5开发技巧之如何在列表中显示主键字段
- ThinkPHP6敏捷后台开发框架
- 一行代码蒸发64亿?!形式化验证帮你一秒避免悲剧
- 画图软件origin-柱状图断点设置
- 《2019-2020中国开发者调查报告》发布了!
- 强化学习(一):概述
- VMware虚拟机中使用usb设备
- 网络安全入门:什么是防火墙,防火墙有哪些功能
热门文章
- 软考|网络工程师复习资料、附历年真题、详细学习笔记,考试重点,看过的人都能过!
- 和机器人问问题的软件_ABB机器人系统与软件的问答
- 金蝶K3 14.0 泛微OA10.0 注册机 学习沟通
- 数据库系统概念(机械工业出版社,第六版)复习——第八章:关系数据库设计
- html 讲课ppt,HTML 表单教学课件.ppt
- vant-ui van-tabs 插入图片
- 2019南航计算机学院夏令营,2019南航年度人物宣讲丨计算机学院开展线上宣讲活动...
- 后台管理系统的逻辑实现
- 物联网技术如何推进乡村振兴
- 【C4D教程】全网最好的C4D常用插件分享!错过就没有了!