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 实现数据驱动相关推荐

  1. python ddt mysql_Python数据驱动DDT的应用

    原标题:Python数据驱动DDT的应用 在开始之前,我们先来明确一下什么是数据驱动,在百度百科中数据驱动的解释是:数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把 ...

  2. 案例驱动python编程入门-python ddt数据驱动实例代码分享

    python ddt数据驱动最简实例 在接口自动化测试中,往往一个接口的用例需要考虑 正确的.错误的.异常的.边界值等诸多情况,然后你需要写很多个同样代码,参数不同的用例.如果测试接口很多,不但需要写 ...

  3. python 基于ddt实现数据驱动测试

    这篇文章主要介绍了python 基于DDT实现数据驱动测试的方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下 简单介绍 ​ ddt(date driver test),所谓数据驱 ...

  4. Unittest自动化测试框架教程(四)——Python中的数据驱动测试DDT

     " 数据驱动测试DDT(Data Drivern test),是自动化测试领域优势中亮眼的闪光点,在unittest测试框架中对数据驱动更是提供了强大的支持,文章通过基础概念的引入,介绍了 ...

  5. python数据驱动:基于ddt的数据驱动测试

    一.yaml文件的调用 二.csv文件的数据驱动 三.基于ddt的数据驱动测试 方法1: from selenium import webdriver import unittest from tim ...

  6. arcgis python脚本实现从界面选择输入输出_ArcGIS Python脚本实现数据驱动页面的批量出图...

    这里讲一下如何通过Python脚本实现数据驱动页面的批量出图. 1 前提条件 首先要知道的是数据驱动页面的导出必须启用驱动页面,同时地图文档必须处于布局视图中. 2 具体实现 准备好批量出图的Pyth ...

  7. python中什么是数据驱动_利用Python如何实现数据驱动的接口自动化测试

    前言 大家在接口测试的过程中,很多时候会用到对CSV的读取操作,本文主要说明Python3对CSV的写入和读取.下面话不多说了,来一起看看详细的介绍吧. 1.需求 某API,GET方法,token,m ...

  8. python语言百度百科-Python 语言下数据驱动DDT的应用

    数据驱动测试的含义: 在百度百科上的解释是: 数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子.利用黑盒测试法进行动态测试时,需要测试软件产品 ...

  9. python使用ddt_python数据驱动ddt的使用

    DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据),file_data(可以从json或者yaml中获取测试数据) @ddt.ddt添加在类的前面,@ddt.data添加在函数的前 ...

最新文章

  1. lambda函数详解
  2. python sqlite3的使用
  3. php获取两个输入框的值,PHP获取多个文本框中值的实例代码
  4. UML类图10分钟快速入门
  5. Java中的查找树和哈希表(一级)
  6. mixin network_基于Mixin Network的Go语言比特币开发教程 : 用 Mixin Messenger 机器人接受和发送比特币...
  7. sbe 详解_内部简单二进制编码(SBE)
  8. python选择排序从大到小_Python实现选择排序
  9. 创业产品经理需要懂技术吗?
  10. 记录——《C Primer Plus (第五版)》第七章编程练习第十一题
  11. android 图片编辑 画圈,Android种图片圆形化的三种方式
  12. 坐火车卧铺,到底是上、中、下哪个好?其实简单对比一下就知道了
  13. Bex5开发技巧之如何在列表中显示主键字段
  14. ThinkPHP6敏捷后台开发框架
  15. 一行代码蒸发64亿?!形式化验证帮你一秒避免悲剧
  16. 画图软件origin-柱状图断点设置
  17. 《2019-2020中国开发者调查报告》发布了!
  18. 强化学习(一):概述
  19. VMware虚拟机中使用usb设备
  20. 网络安全入门:什么是防火墙,防火墙有哪些功能

热门文章

  1. 软考|网络工程师复习资料、附历年真题、详细学习笔记,考试重点,看过的人都能过!
  2. 和机器人问问题的软件_ABB机器人系统与软件的问答
  3. 金蝶K3 14.0 泛微OA10.0 注册机 学习沟通
  4. 数据库系统概念(机械工业出版社,第六版)复习——第八章:关系数据库设计
  5. html 讲课ppt,HTML 表单教学课件.ppt
  6. vant-ui van-tabs 插入图片
  7. 2019南航计算机学院夏令营,2019南航年度人物宣讲丨计算机学院开展线上宣讲活动...
  8. 后台管理系统的逻辑实现
  9. 物联网技术如何推进乡村振兴
  10. 【C4D教程】全网最好的C4D常用插件分享!错过就没有了!