python 的unittest 没有自带数据驱动功能。

所以如果使用unittest,同时又想使用数据驱动,那么就可以使用DDT来完成。

DDT是 “Data-Driven Tests”的缩写,包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据),file_data(可以从json或者yaml中获取测试数据)

【通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,以元组,列表,字典等数据,需要自行在脚本中对数据进行分解或者使用unpack分解数据】

说明:

@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,可以考虑直接列表传出,索引取值(要注意参数不对等的情况)

【注意】使用请先导包

1.传列表

importunittestfrom ddt import ddt,data,unpack

importunittestfrom ddt importddt,data,unpack

test_data=[1,3]

@ddtclassTestMath(unittest.TestCase):defsetUp(self):pass@data(*test_data) #脱外套只能一层deftest_print_data(self,item):print(item)

importunittestfrom ddt importddt,data,unpack

test_data=[[1,3],[4,5]]

@ddtclassTestMath(unittest.TestCase):defsetUp(self):pass@data(*test_data)

@unpack#在“脱外套”之后,针对你拿到的每一条数据根据逗号进行拆分

def test_print_data(self,a,b): #需要按拆出来的每条数据内的个数进行传参

print(a)print(b)

2.列表嵌套字典

如果需要对字典进行unpack 参数名需要与你的字典key对应

importunittestfrom ddt importddt,data,unpack

test_data=[{'no':1,'name':'小李'},{'no':2,'name':'小张'}]

@ddtclassTestMath(unittest.TestCase):defsetUp(self):pass@data(*test_data)def test_print_data(self,a): #需要按拆出来的每条数据内的个数进行传参

print(a['no'])print(a['name'])

importunittestfrom ddt importddt,data,unpack

test_data=[{'no':1,'name':'小李'},{'no':2,'name':'小张'}]

@ddtclassTestMath(unittest.TestCase):defsetUp(self):pass@data(*test_data)

@unpack#在“脱外套”之后,针对你拿到的每一条数据根据逗号进行拆分

def test_print_data(self,no,name): #需要按拆出来的每条数据内的个数进行传参

print(no)print(name)

如果需要对字典进行unpack 参数名需要与你的字典key对应

importunittestfrom ddt importddt,data,unpack

test_data=[{'no':1,'name':'小李'},{'no':2,'name':'小张'}]

@ddtclassTestMath(unittest.TestCase):defsetUp(self):pass@data(*test_data)

@unpack#在“脱外套”之后,针对你拿到的每一条数据根据逗号进行拆分

def test_print_data(self,a,b): #需要按拆出来的每条数据内的个数进行传参

print(a)print(b)#结果会报错,参数名需要与你的字典key对应

unpack python_python数据处理之 ddt,@data, @unpack相关推荐

  1. 实时大数据处理real-time big data processing (RTDP)框架:挑战与解决方案

    实时大数据处理框架:挑战与解决方案 0.引言 1 数据收集 1.1.⼴泛的异构性 1.2.数据质量保障 2. 数据分析 2.1.数据处理的时效性 2.2.动态环境下的索引设计 3 数据安全 3.1.暴 ...

  2. R语言数据处理——基础篇 data.frame基本操作

    文章目录 R语言数据处理--基础篇 data.frame基本操作 data.frame的创建 数据访问.条件筛选与删除 数据访问 数据筛选 删除 使用`gather()`进行data.frame数据格 ...

  3. 利用matlab的SPM12进行功能核磁共振成像数据处理_Auditory fMRI data(四)

    懒癌患者可以直接利用SPM12 batch script的代码对数据处理进行操作,连数据都不需要下载,直接打开matlab,运行以下代码即可. data_path = fileparts(mfilen ...

  4. 数据处理不等式:Data Processing Inequality

    我是在差分隐私下看到的,新解决方案的可用性肯定小于原有解决方案的可用性,也就是说信息的后续处理只会降低所拥有的信息量. 那么如果这么说的话为什么还要做特征工程呢,这是因为该不等式有一个巨大的前提就是数 ...

  5. pytorch源码解析2——数据处理torch.utils.data

    迭代器 理解 Python 的迭代器是解读 PyTorch 中 torch.utils.data 模块的关键. 在 Dataset, Sampler 和 DataLoader 这三个类中都会用到 py ...

  6. 利用matlab的SPM12进行功能核磁共振成像数据处理_Auditory fMRI data(一)

    大脑成像的每次采样包括64个连续的切片.大脑的三维图像大小为64X64X64,每个像素的大小为3X3X3立方毫米.TR时间设置为7s.(TR是指第一個RF到下一個相同RF出現時,中間間隔的時間.RF, ...

  7. 数据处理算法链接 DATA MINING GA LINK

    Amazement awaits us at every corner. 1.贝叶斯算法[1-a]/网络[1-b] Bayesian/BN(Bayesian Network) References: ...

  8. 利用matlab的SPM12功能核磁共振成像数据处理_Auditory fMRI data(二)

    2.3 Segmentation图像分割 第一步:Highlight the "Volumes" field and then select the subject's regis ...

  9. ddt python_python——DDT

    一般进行接口测试时,每个接口的传参都不止一种情况,一般会考虑正向.逆向等多种组合.所以在测试一个接口时通常会编写多条case,而这些case除了传参不同外,其实并没什么区别. 这个时候就可以利用ddt ...

  10. ddt python_Python 之数据驱动工具:DDT

    https://www.cnblogs.com/miniren/p/7099187.html 背景 python 的unittest 没有自带数据驱动功能. 所以如果使用unittest,同时又想使用 ...

最新文章

  1. 绿色版NVM安装与配置详细说明
  2. CentOS中安装git
  3. datagrip mysql乱码_DataGrip和IDEA无法连接上Mysql问题解决方法详解
  4. 【mysql】mysql优化
  5. .NET Core开发实战(第8课:配置框架:让服务无缝适应各种环境)--学习笔记
  6. rdd.foreach(print)报错SyntaxError: invalid syntax
  7. 初探下一代SIEM核心技术发展趋势
  8. simhash与Google的网页去重(转)
  9. 五笔字根表识别码图_86版五笔字根表及口诀(最新图文版)
  10. office插件开发_OneKeyTools:强大PPT插件
  11. 查看Hadoop的版本号
  12. 修改Win10右键菜单
  13. 完整的微信登陆 接收消息流程
  14. 爬虫技术(04)神箭手爬虫field的属性
  15. 即使是庸才我也要成为庸才中的人才
  16. 解决AS3.5在oppo系统更新后无法打包apk问题
  17. Excel教程之什么是好的仪表板工具
  18. db与放大倍数的转化
  19. pv=nrt_中学物理之pV=nRT应用总结篇
  20. 何为 Token?什么是基于 token 的认证?

热门文章

  1. 三国志战略版360区S4服务器合并信息,三国志战略版s4赛季开局选哪个州?平民开局起兵地推荐...
  2. 地方麻将吉林过蛋玩法算法
  3. 湖南科技大学EDA作业
  4. Elastic-Job使用
  5. python弹球游戏添加一个球_Python实现的弹球小游戏示例
  6. python入门笔记——类和对象③(案例:自动随机文字游戏——决战紫禁之巅)
  7. JavaScript 编写Date 格式化方法『Python风格』
  8. python理财基金数据分析可视化系统
  9. 【冷冻电镜|论文阅读】A feature-guided, focused 3D signal permutation method for subtomogram averaging
  10. 脑电分析系列[MNE-Python-17]| 使用多种滤波器对脑电数据去除伪影