UnitTest自动化测试框架结合数据驱动(DDT)应用实践

2023-11-07

【原文链接】UnitTest自动化测试框架结合数据驱动(DDT)应用实践

1、安装ddt

pip install ddt

2.使用方式

首先导入ddt,然后在测试类上使用@ddt.ddt装饰,测试方法使用@ddt.data()装饰,data里面填写参数即可,具体使用如下

2.1、测试函数有一个参数

代码如下:

import unittest
import ddt


@ddt.ddt
class TestDemo01(unittest.TestCase):

    @ddt.data(0, 1, 2, 3, 4, 5, -1, -2, -3, -4, -5)
    def test_01(self, x):
        print(x)


if __name__ == "__main__":
    unittest.main()

执行结果如下:

0
1
2
3
4
5
-1
-2
-3
-4
-5


Ran 11 tests in 0.004s

OK

2.2 、测试函数有多个参数,比如有两个参数

需要在测试函数上使用一个@ddt.unpack来装饰,参数使用元组形式,代码如下:

import unittest
import ddt


@ddt.ddt
class TestDemo01(unittest.TestCase):

    @ddt.data((0, 1), (2, 3), (4, 5), (-1, -2), (-3, -4))
    @ddt.unpack
    def test_01(self, x, y):
        print(x)
        print(y)
        print("*************************")


if __name__ == "__main__":
    unittest.main()

执行结果如下:

0
1
*************************
2
3
*************************
4
5
*************************
-1
-2
*************************
-3
-4
*************************


Ran 5 tests in 0.004s

OK

2.3、测试数据从yaml文件读取

例如在demo.yml文件中编写如下内容:

-
  name: "redrose2100"
  age: 33
-
  name: "redrose2200"
  age: 22
-
  name: "redrose2300"
  age: 25

在测试用例上使用@ddt.file_data()装饰器装饰,代码如下

import unittest
import ddt


@ddt.ddt
class TestDemo01(unittest.TestCase):

    @ddt.file_data("demo.yml")
    def test_01(self, **kwargs):
        print(kwargs.get("name"))
        print(kwargs.get("age"))
        print("-------------------")


if __name__ == "__main__":
    unittest.main()

执行结果如下:

redrose2100
33
-------------------
redrose2200
22
-------------------
redrose2300
25
-------------------


Ran 3 tests in 0.003s

OK

这里可以看到因为ymal文件中设置了三组数据,所以这里显示执行了3个用例,这就是数据驱动,适合用于测试多组数据合法性的场景,比如接口测试中测试各个参数是否有合法校验的时候就非常适合采用数据驱动测试的方法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UnitTest自动化测试框架结合数据驱动(DDT)应用实践 的相关文章

随机推荐

  • oracle redo 移动位置,Oracle数据文件移动方法 - 转

    6 2 参考资料 Oracle数据库移动方法 这里所指 数据库移动 是将Oracle数据文件 系统数据文件或用户数据文件 控制文件 重做日志移动至新的存储路径 并修改Oracle相关配置 使之可以重新正常启动 这种应用常见于系统扩容后的Or
  • Gradle学习笔记 Gradle命令行

    执行多个任务 安装好Gradle之后 就可以使用Gradle命令行了 首先我们先新建一个文件夹gradle learn 然后在其中新建一个build gradle 这是Gradle的项目构建文件 task compile doLast pr
  • MySql InnoDB行锁——“三剑客”

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 行锁 三剑客 前言 一 行锁三剑客是什么 二 记录锁 Record Locks 三 间隙锁 Gap Locks 四 临键锁 Next Key Locks 总结 前言 行锁在
  • 蓝桥杯 Python 组省赛夺奖班-6 二分法

    一 分巧克力 题目 思路 首先确定一下巧克力边长d的上界 这里可以想像把所有巧克力全部融化 平均每个人能分到 sum k 面积的巧克力 高度不考虑 那么d的上界为int math sqrt sum k 暴力 直接从d的上界开始到1判断是否可
  • shell脚本一键部署LAMP架构

    一 部署LAMP基本架构 1 L linux A apache M mysql P php 2 稳定版本 mysql5 1 php5 3 apache2 2 3 安装顺序 apache gt mysql gt php 4 将所需的压缩包 h
  • Linux设置静态IP

    Linux设置静态IP 使用ip addr查看ip 如下所示就是动态IP 1 什么是静态IP 静态ip就是固定的ip 需要手动设置 静态IP地址 又称固定IP地址 是长期分配给一台计算机或网络设备使用的 IP 地址 一般来说 一般是特殊的服
  • 【计算机视觉】双目测距(五)--匹配算法对比

    原文 http www cnblogs com polly333 p 5130375 html 三种匹配算法比较 BM算法 该算法代码 view plaincopy to clipboardprint CvStereoBMState BMS
  • 解决报错:Vue移动端项目中鼠标无动作时,滚动条自动下滑,拉取数据

    背景 在鼠标慢慢滚动 滚动到某一处位置的时候 滚动条自动触发 拼命往下走 正常应该是滑动到摸个位置时候 加载下一页的数据 Video 2022 09 16 155954 这个问题困扰了我两天 特此记录 用的Vant组件库的van list来
  • 2017电子设计攻略_控制类

    2017年电子设计大赛准备攻略 控制类 Author 靳皓屹 中北大学 1 组队 组队是一件非常重要的事情 在组队之前 一定要想清楚 1 三个人中间是否有一位核心成员 具有决断力 能够定好团队的方向 2 分工问题 个人认为最合理的分工是这样
  • g++指定include路径

    在linux下编译c 应用 可使用g 命令 编译的时候也是针对c 源文件 需要指定头文件路径 在指定头文件路径时 可使用 I参数 如果是多个路径则要通过指定多个 I参数来设置多个路径
  • 中国地方ZF数据开放指数(省域指数、城市指数)

    中国开放数林指数 是我国首个专注于评估政府数据开放水平的专业指数 由复旦大学数字与移动治理实验室制作出品 开放数据 蔚然成林 开放数林 意喻我国政府数据开放利用的生态体系 一棵棵地方开放 数木 由最初的丛然并生 成荫如盖 直至枝繁叶茂 花开
  • Python JSON格式处理

    从外部读入的json经过loads反序列化后可以转换为dict类型的数据 dict类型的数据可以通过dumps转换为json格式的数据 param self request body decode utf 8 dict data json
  • ANSI C、C89、C99和C51的区别

    ANSI C C89 C99和C51的区别 什么是ANSI C ISO C C89 C90标准 随着C语言使用得越来越广泛 出现了许多新问题 人们日益强烈地要求对C语言进行标准化 1983年 美国国家标准协会 ANSI 组成了一个委员会 X
  • html文件生成在线连接,使用Themleaf 模板引擎手动生成html文件

    1 为什么要写这一篇呢 在做一个邮件发送功能的时候 需要发送html邮件 javaMail 发送html 的时候需要有已经生成的html正文 所以需要提前将要发送的内容生成 所以就需要模板引擎来动态填充数据 public voidsendH
  • 【华为OD机试】宜居星球改造计划【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 2XXX年 人类通过对火星的大气进行宜居改造分析 使得火星已在理论上具备人类宜居的条件 由于技术原因 无法一次性将火星大气全部改造 只能通过局部处理形式 假设将火星待
  • R语言学习-一、读取文件和数据基本处理01

    R语言学习01 读取文件 不同文件类型的数据读取 csv xlsx 处理数据对象 处理对象的函数 数据框内变量处理 逻辑运算符 数据框内变量计算 连续性变量分组 变量重命名 不同文件类型的数据读取 csv a lt read csv H d
  • 分布式基础学习【一】 —— 分布式文件系统

    转自 http blog csdn net heyutao007 article details 5468390 所谓分布式 在这里 很狭义的指代以Google的三驾马车 GFS Map Reduce BigTable为框架核心的分布式存储
  • AI「反腐」,德国马普所结合 NLP 和 DNN 开发抗蚀合金

    内容一览 在被不锈钢包围的世界中 我们可能都快忘记了腐蚀的存在 然而 腐蚀存在于生活中的方方面面 无论是锈迹斑斑的钢钉 老化漏液的电线 还是失去光泽的汽车 这一切的发生都与腐蚀有关 据统计 全世界每年由金属腐蚀带来的经济损失超过 2 5 万
  • 通过sql注入进行权限提升操控主机

    前面将sql注入的基础已经介绍完了 那么可能很多初学者不知道我们为什么要进行sql注入 除了拿到数据库以外还有什么用 所以今天来理一理 通过sql注入 能否提升权限 拿到主机shell呢 这里主要有两种方式 一 使用mysql自带函数int
  • UnitTest自动化测试框架结合数据驱动(DDT)应用实践

    原文链接 UnitTest自动化测试框架结合数据驱动 DDT 应用实践 1 安装ddt pip install ddt 2 使用方式 首先导入ddt 然后在测试类上使用 ddt ddt装饰 测试方法使用 ddt data 装饰 data里面