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. Shiro密码处理

    散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的数据,常见的散列算法如 MD5.SHA等.一般进行散列时最好提供一个 salt(盐),比如加密密码"admin& ...

  2. 支持 UTF-8 中文的串口调试工具

    最近使用 mdk526,编辑设置使用 utf-8,编辑窗口中文正常,但是编译的时候提示 warning: #870-D: invalid multibyte character sequence,解决 ...

  3. 吴裕雄--天生自然 PHP开发学习:运算符

    <?php $x=10; $y=6; echo ($x + $y); // 输出16 echo '<br>'; // 换行 echo ($x - $y); // 输出4 echo ' ...

  4. 尝试用kotlin做一个app(写在前面)

    学kotlin的目的好像就是做一个app,不一定有什么想做的项目,只是单纯想掌握这一门技术,确切地说只是单纯想学会做app.对于概念的东西,我也没兴趣深究,用得到的学一下,用不到的,就算了.我也不知道 ...

  5. vue element-ui Table数据解除自动响应方法

    在对列表Table进行数据编辑时,会存在table的增删改操作后,列表view也自动响应发生了变化,原因是赋值的数据是一个引用类型共享一个内存区域的.所以我们就不能直接连等复制,需要重新克隆一份新的数 ...

  6. 【收藏】免费开源好看的bootstrap后台模板

    1.ace admin github:https://github.com/bopoda/acedemo:http://ace.jeka.by/ 2.CoreUI jQuery.Angular.Rea ...

  7. request对象和response对象的作用和相关方法

    response对象(响应) 响应行 状态码 :setStatus(int a) 设置状态码 302重定向 304控制缓存 响应头 setHeader() 一个key对应一个value addHead ...

  8. 使用Dom4j生成xml文件(utf-8编码)

    xml文件内容: <?xml version="1.0" encoding="UTF-8"?> <result> <code> ...

  9. elasticsearch + springboot 整合

    https://blog.csdn.net/chengyuqiang/article/details/102938266 https://blog.csdn.net/chengyuqiang/arti ...

  10. Django2.0——实现简易登陆、注册

    思路: 实现简易的登陆.注册,我们至少需要三个HTML页面,一个主页面.一个登陆界面.一个注册界面.为了存储和校验用户的账号和密码,我们需要写一个模型类(用于映射到数据库).两个form类(一个登陆. ...