unittest(8)- 学习ddt
import unittest
from ddt import ddt, data, unpack
"""
1.正常情况下,测试函数(即测试用例)中不可以传参,如果要使用参数,只能通过超继承_init_函数,
在初始化函数中传入参数,然后在测试函数中调用参数
2.如果不使用超继承,还可以使用ddt,这样就可以给用例传参了
3.当用例的参数不超过5个时,可以使用unpack,超过5个后,不建议使用ddt,而应该直接通过索引取参数
"""
# ddt-----------------------------
test_data = [1, 3]
# @ddt # 装饰测试类
# class TestMath(unittest.TestCase):
#
# @data(*test_data) # 装饰测试用例,传入测试数据,这里会把列表的子元素分别取出来
# def test_print_data(self, item): # 使用ddt后,可以给用例传参,有多少个子元素,就会执行几次用例,一个子元素对应一个用例
# print("item: ", item)
# ----------------------------------------------------
# 参数前加*,脱外套
# t = [3, 6]
# print(*t)
# -----------------------------------------------------
# 给数据加*后,会脱掉一层外套,数据被拆分,
# 有几个数据就会执行几次测试用例。和遍历是一样的效果
# test_data = [[1, 4], [2, 5]]
#
#
# @ddt # 装饰测试类
# class TestMath(unittest.TestCase):
#
# @data(*test_data) # 装饰测试用例,传入数据,给数据脱外套
# def test_print_data(self, item):
# print("item: ", item)
# -------------------------------------------------------------
# 给用例传2个参数
# test_data = [[1, 4], [2, 6]]
#
# @ddt
# class TestMath(unittest.TestCase):
# @data(*test_data)
# @unpack # 把拿到的数据,用逗号进行拆分,比如经过*test_data得到子元素[1, 4], [2, 6], 经过unpack后,会把[1,4]变成1和4,所以在用例中,需要两个参数来接收
# def test_print_data(self, a, b):
# print("a: ", a)
# print("b: ", b)
# ---------------------------------------------------
# 脱掉一层外套后的子元素个数必须相等,不然会报错,要么就设置默认值参数
# test_data = [[1, 2], [3, 4, 5]]
#
# @ddt
# class TestMath(unittest.TestCase):
# @data(*test_data)
# @unpack
# def test_print_data(self, a, b, c=None):
# print("a: ", a)
# print("b: ", b)
# print("c: ", c)
# -----------------------------------------------
# 子元素超过5个后不建议使用unpack
# test_data = [[1, 3], [1, 2, 3, 4, 5, 6, 7]]
#
#
# @ddt
# class TestMath(unittest.TestCase):
# @data(*test_data)
# def test_print_data(self, item):
# print("item: ", item)
# --------------------------------------
# 对字典进行unpack时,测试用例中传入的参数名要和字典的键名一样
# test_data = [{"num": 1, "name": "huihui"}, {"num": 2, "name": "haha"}]
#
#
# @ddt
# class TestMath(unittest.TestCase):
# @data(*test_data)
# @unpack
# def test_print_data(self, num, name):
# print("num: ", num)
# print("name: ", name)
unittest(8)- 学习ddt的更多相关文章
- selenium + python自动化测试unittest框架学习(二)
1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...
- selenium + python自动化测试unittest框架学习(一)selenium原理及应用
unittest框架的学习得益于虫师的<selenium+python自动化实践>这一书,该书讲得很详细,大家可以去看下,我也只学到一点点用于工作中,闲暇时记录下自己所学才能更加印象深刻. ...
- python - unittest 单元测试学习
单元测试 单元测试是用来对一个模块.一个函数或者一个类进行正确性检验的测试工作 比如对Python中的abs 的测试 输入正数: 比如 1, 2, 3, 返回值不变 输入负数: 比如 -1, -2, ...
- unittest使用数据驱动ddt
简介 ddt(data driven test)数据驱动测试:由外部数据集合来驱动测试用例,适用于测试方法不变,但需要大量变化的数据进行测试的情况,目的就是为了数据和测试步骤的分离 由于unittes ...
- 12.unittest的学习
unittest学习后的总结,记录各个主要内容
- 【python】以souhu邮箱为例学习DDT数据驱动测试
前言 DDT(Data-Driven Tests)是针对 unittest 单元测试框架设计的扩展库.允许使用不同的测试数据来运行一个测试用例,并将其展示为多个测试用例.通俗理解为相同的测试脚本使用不 ...
- selenium + python自动化测试unittest框架学习(七)随机生成姓名
在自动化测试过程中经常要测试到添加用户的操作,每次都要输入中文,原本是找了十几个中文写成了列表,然后从列表中随机取出填入用户名文本框中,随着测试的增加,发现同名的人搜索出来一大堆,最后在网上找了个随机 ...
- selenium + python自动化测试unittest框架学习(五)webdriver的二次封装
因为webdriver的api方法很长,再加上大多数的定位方式是以xpath方式定位,更加让代码看起来超级长,为了使整体的代码看起来整洁,对webdriver进行封装,学习资料来源于虫师的<se ...
- 单元测试模块unittest使用学习
工作原理: unittest中最核心的四个概念是:test case, test suite, test runner, test fixture. 一个TestCase的实例就是一个测试用例.什么是 ...
随机推荐
- 12)hInstance和hWnd写进子类
1)因为这些变量存在于 WInMaincpp文件中 但是 我想在我的CGameCtrl子类中要用到hInstance实例句柄和hWNd窗口句柄,那么 我就将这些变量在父类CGameCtrl中有一份 ...
- 分布式场景下Kafka消息顺序性的思考
如果业务中,对于kafka发送消息异步消费的场景,在业务上需要实现在消费时实现顺序消费, 利用kafka在partition内消息有序的特点,消息消费时的有序性. 1.在发送消息时,通过指定parti ...
- web标准介绍
web标准介绍 web标准: w3c:万维网联盟组织,用来制定web标准的机构(组织) web标准:制作网页遵循的规范 web标准规范的分类:结构标准.表现标准.行为标准. 结构:html.表示:cs ...
- 实现文件上下文管理(\_\_enter\_\_和\_\_exit\_\_)
实现文件上下文管理(__enter__和__exit__) 我们知道在操作文件对象的时候可以这么写 with open('a.txt') as f: '代码块' 上述叫做上下文管理协议,即with语句 ...
- day54-mysql-库、表、数据操作
. 什么是数据库 存储数据的仓库 . 什么数据: 大家所知道的都是数据.比如:你同学的名字,年龄,性别等等 . 数据库概念 .数据库服务器 .数据库管理系统 重点 .库 .表 .记录 .数据 参考画图 ...
- Gene family|
6.1引言 随着测序技术的提高,能被测序的物种趋近于复杂(因为越高等的生物基因组大且复杂(1.本身基因结构复杂2.复杂程度与种属关系并不相关)),所以基因家族(Gene family)的数目可能能够更 ...
- [SDOI2019]热闹又尴尬的聚会(图论+set+构造)
据说原数据可以让复杂度不满的暴力O(Tn^2)过掉……O(Tn^2)方法类似于codeforces一场div2的E题 有一种比较好的方法:每次找出原图G中度最小的点加入q,然后将相邻的点加入新图G'. ...
- 三、linux-mysql mysql的多实例
1.什么是mysql多实例 一个机器开通多个端口,运行多个mysql服务器进程,这些服务进程通过不同的socket监听不同的服务端口提供各自的服务,但它们共用一台mysql安装程序,使用不同的my.c ...
- Spring容器中的Bean几种初始化方法和销毁方法的先后顺序
https://blog.csdn.net/caihaijiang/article/details/8629725
- netstat - 系统信息
netstat - 系统信息 注意:如果是勘验或者验证漏洞,需要验证netstat程序的完整性(netstat程序是否被修改过). # 老版本的CentOS中会自带这个软件包,新版的7有的时候需要单独 ...