1、ddt模块包含类的装饰器ddt和两个方法装饰器data

  • ddt.ddt:装饰类,也就是继承TestCase的类。

  • ddt.data:装饰测试方法,参数是一系列的值,用来传递参数

  • ddt.file_data:装饰测试方法,参数是文件名。文件可以是json或者yaml类型。

    注意,如果文件是以“.yml”或者".yaml"结尾,ddt会作为yaml类型处理,其他文件都会作为json文件处理。

    如果文件是列表,列表的值会作为测试用例参数,同时,会作为测试用例方法名后缀显示。

    如果文件是字典,字典的key会作为测试用例方法的后缀显示,字典的value会作为测试用例参数。

  • ddt.unpack:传递的是复杂的数据结构时使用,比如使用列表或者元组,添加unpack后,ddt会自动把元组或者列表对应到多个参数上。

说明:

@ddt 读取单个测试数据:-----装饰测试类,继承自TestCase的类

@data()---装饰测试方法,拿到几个数据数据就执行几条用例(可以以“*变量”传入括号;也可以直接括号放入数值,逗号隔开)

    @data(a,b)    ------那么a和b各运行一次用例

    @data([a,d],[c,d])  -----如果没有unpack,那么[a,b]当成一个参数传入用例运行;如果有unpack,那么[a,b]被分解开,按照用例中的两个参数传递

    @file_data(filename)   ----对于json的文件,每一个json元素按照一个用例运行,可以依照python分解元组,列表或者字典的方式分解传入

@unpack  ----解包,使用复杂的数据结构时,与此同时,测试方法的参数需要多个(参数的传值个数与解包后数量必须一一对应,“可以考虑用None”)

        如果test_data的值很多(大于5)不建议使用unpack,可以考虑直接列表传出,索引取值(要注意参数不对等的情况)

#ddt+unittest 来进行数据的,第三方库
#装饰器 自行了解
import unittest
from ddt import ddt,data,unpack
test_data = [[,],[,]] @ddt #装饰测试类,继承TestCase的类。
class TestMath(unittest.TestCase):
def setUp(self):
print('start') @data(*test_data) # *只能脱一层外套, 传参数给测试用例
@unpack #针对拿到的每条数据按逗号拆分,拆分几个数据,在函数里就传几个参数
#使用unpack分解list或者tuple
def test_print_data(self,a,b): #传几个变量就用几个变量接收
print("item:",a)
print("item:",b) def tearDown(self):
print('end') if __name__ == "__main__":
unittest.main(verbosity=)

python学习笔记(30)——ddt的更多相关文章

  1. python学习笔记30(全局变量的两种解决办法)

    先看程序: >>> count = 0 >>> def fuc(count): print count count +=1 >>> for i i ...

  2. Python学习笔记,day5

    Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...

  3. python学习笔记(二)、字符串操作

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...

  4. Deep learning with Python 学习笔记(10)

    生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 ...

  5. Deep learning with Python 学习笔记(3)

    本节介绍基于Keras的使用预训练模型方法 想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络.预训练网络(pretrained network)是一个保存好的网络,之前已在 ...

  6. Deep learning with Python 学习笔记(2)

    本节介绍基于Keras的CNN 卷积神经网络接收形状为 (image_height, image_width, image_channels)的输入张量(不包括批量维度),宽度和高度两个维度的尺寸通常 ...

  7. Python学习笔记(15)- os\os.path 操作文件

    程序1 编写一个程序,统计当前目录下每个文件类型的文件数,程序实现如图: import os def countfile(path): dict1 = {} # 定义一个字典 all_files = ...

  8. 雨痕 的《Python学习笔记》--附脑图(转)

    原文:http://www.pythoner.com/148.html 近日,在某微博上看到有人推荐了 雨痕 的<Python学习笔记>,从github上下载下来看了下,确实很不错. 注意 ...

  9. Python学习笔记:装饰器

    Python 装饰器的基本概念和应用 代码编写要遵循开放封闭原则,虽然在这个原则是用的面向对象开发,但是也适用于函数式编程,简单来说,它规定已经实现的功能代码不允许被修改,但可以被扩展,即: 封闭:已 ...

  10. python 学习笔记 12 -- 写一个脚本获取城市天气信息

    近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...

随机推荐

  1. jsp页面引入不了js路径没错

    最近搞开发,发现有个jsp页面引入不了js:很是神奇,路径什么的都没问题,同事的浏览器可以加载该js,发现放到其他的文件夹下可以加载该js:当时没研究出来,任务紧就没研究了. 最近闲下来了,有去研究, ...

  2. MyBatis:配置解析

    配置解析 核心配置文件 mybatis-config.xml 系统核心配置文件 MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息. 能配置的内容如下: configur ...

  3. python单链表的基本操作思路

    单链表: 1.定义链表 class ListNode: # 定义节点 def __init__(self, x): self.val = x # 节点当前值 self.next = None # 指向 ...

  4. python刷LeetCode:13. 罗马数字转整数

    难度等级:简单 题目描述: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II  ...

  5. POJ - 1127 Jack Straws(几何)

    题意:桌子上放着n根木棍,已知木棍两端的坐标.给定几对木棍,判断每对木棍是否相连.当两根木棍之间有公共点或可以通过相连的木棍间接的连在一起,则认为是相连的. 分析: 1.若线段i与j平行,且有部分重合 ...

  6. 腾讯大佬告诉你,写Python到底用什么IDE合适

    不管你是 Python 新手还是老鸟,肯定纠结过一个问题: 到底用什么编辑器写 Python 代码好? 为此,我们调查了数十位鹅厂程序猿们爱用的 Python IDE,从他们对每款编辑器的看法中,也许 ...

  7. ftp主动和被动模式区别

    转载自:http://www.west999.com/cms/wiki/server/2018-11-16/49417.html FTP是基于TCP的服务的,FTP不同之处在于FTP使用两个端口,一个 ...

  8. PAT B1095 解码PAT准考证

    半个月了,每天做几道题PAT基础题,终于把基础的95道题目做完了.总体来说,没有太难的东西,偶尔几个题目有点复杂而已. 加油,离3月份的考试越来越近了,还有155道题目等着我呢!!! B_1095题目 ...

  9. JAVA 算法练习(三)

    拆解排序问题 后缀子串排序 题目: 对于一个字符串,将其后缀子串进行排序,例如grain 其子串有: grain rain ain in n 然后对各子串按字典顺序排序,即: ain,grain,in ...

  10. 87.QuerySet API使用详解:create方法

    create:创建一条数据,并且保存到数据库中,这个方法相当于先用指定的模型创建一个一个对象,然后再调用这个对象的save方法,示例代码如下: from django.db import connec ...