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的更多相关文章

  1. selenium + python自动化测试unittest框架学习(二)

    1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...

  2. selenium + python自动化测试unittest框架学习(一)selenium原理及应用

    unittest框架的学习得益于虫师的<selenium+python自动化实践>这一书,该书讲得很详细,大家可以去看下,我也只学到一点点用于工作中,闲暇时记录下自己所学才能更加印象深刻. ...

  3. python - unittest 单元测试学习

    单元测试 单元测试是用来对一个模块.一个函数或者一个类进行正确性检验的测试工作 比如对Python中的abs 的测试 输入正数: 比如 1, 2, 3, 返回值不变 输入负数: 比如 -1, -2, ...

  4. unittest使用数据驱动ddt

    简介 ddt(data driven test)数据驱动测试:由外部数据集合来驱动测试用例,适用于测试方法不变,但需要大量变化的数据进行测试的情况,目的就是为了数据和测试步骤的分离 由于unittes ...

  5. 12.unittest的学习

    unittest学习后的总结,记录各个主要内容

  6. 【python】以souhu邮箱为例学习DDT数据驱动测试

    前言 DDT(Data-Driven Tests)是针对 unittest 单元测试框架设计的扩展库.允许使用不同的测试数据来运行一个测试用例,并将其展示为多个测试用例.通俗理解为相同的测试脚本使用不 ...

  7. selenium + python自动化测试unittest框架学习(七)随机生成姓名

    在自动化测试过程中经常要测试到添加用户的操作,每次都要输入中文,原本是找了十几个中文写成了列表,然后从列表中随机取出填入用户名文本框中,随着测试的增加,发现同名的人搜索出来一大堆,最后在网上找了个随机 ...

  8. selenium + python自动化测试unittest框架学习(五)webdriver的二次封装

    因为webdriver的api方法很长,再加上大多数的定位方式是以xpath方式定位,更加让代码看起来超级长,为了使整体的代码看起来整洁,对webdriver进行封装,学习资料来源于虫师的<se ...

  9. 单元测试模块unittest使用学习

    工作原理: unittest中最核心的四个概念是:test case, test suite, test runner, test fixture. 一个TestCase的实例就是一个测试用例.什么是 ...

随机推荐

  1. Ubuntu---VIM 常用命令

    今天学习 VIM 的一些常用命令,向传说中的“最后一个编辑器”进攻,哈哈 插入命令: # insert i : 当前光标之前插入 I : 在此行的行首插入 o : 在下一行新起一行插入 O : 在上一 ...

  2. Myeclipse 10/2014 配置插件(svn、maven、properties、velocity)的方法

    一.配置SVN详细图解 什么是SVN? 管理软件开发过程中的版本控制工具. 下面会以两种方式来介绍怎么安装svn,myeclipse安装SVN插件步骤,以myeclipse 2014为例,第一种是最常 ...

  3. 163邮箱报错: 535 Error: authentication failed

    今天更换新的异常信息发件邮箱,重新申请了一个新邮箱,SMTP功能已经开通,调用java代码报异常,错误信息为:535 Error: authentication failed.经过网上查证,原来新的1 ...

  4. java静态方法和静态字段

    public class Dog{ public static void main(String[]args){ A a= new A(); a.add(); //java实例对象可以访问类的静态方法 ...

  5. Seikimatsu Occult Tonneru(网络流,状态数(建不建边)不多时,可考虑直接进行枚举

    http://acm.hdu.edu.cn/showproblem.php?pid=4309 总结:边可存东西时,可新建一个点x连接u.v,x再连向汇点: #include<iostream&g ...

  6. 项目引入nacos 日志不显示问题

    禁用nacos的日志即可解决 idea当中 添加vm options参数即可 -Dnacos.logging.default.config.enabled=false 打包后的启动命令  java - ...

  7. fiddler修改请求表单数据

    一.使用出发点:进行测试某个添加编辑功能时候,部分字段前端限制了字段长度或者SQ,特殊字符等等的输入: 但是我们测试验证后端服务器是否处理,这个时候去修改提交请求表单,绕过前端的限制进行测试: 二.使 ...

  8. log4j2.xml 配置

    动态生成日志, 日志路径: log4j2.xml 配置如下: <?xml version="1.0" encoding="UTF-8"?> < ...

  9. Mysql-win免安装卸载服务后重新安装不能启动的问题

    一.先看配置文件有没有问题,以下是一个简单的配置 [mysql] default-character-set=utf8 [mysqld] character-set-server=utf8 port ...

  10. JS中获得指定日期前或后几天对应的日期

    var d = new Date(); d.setDate(d.getDate() - 2); console.log(d.toString()); // First of month var c = ...