DDT数据驱动Python

一、DDT数据驱动Python

DDT全称Data-Driven Tests,是基于Python语言写的数据驱动测试框架,可以通过参数化来进行测试数据的准备和自动化测试这两个流程. 它可以让测试人员仅通过不同的数据配置来测试同一个用例的不同情况,从而减少代码的重复量,增加测试用例的覆盖率和灵活性。

二、Python DDT数据驱动详解

DDT的核心思想是将测试数据和测试用例分离,测试数据可以由一些矩阵(Vector)和列表(List)组成,测试用例实现单元测试用例。在DDT中,测试数据是通过一个装饰器 @data 和一个参数装饰器 @unpack 来处理的。装饰器是Python语言中使函数拥有特殊功能的语法糖,使函数有了更多的功能。通过@data@unpack 装饰器就可以快速的为`test_xxxxxx` (`xxxxxx`表示你自己写的测试用例函数名)指定测试数据来进行自动化测试。下面是示例代码:


import unittest
from ddt import ddt, data, unpack

@ddt
class Test_Demo(unittest.TestCase):
    @data([1, 2], [3, 4], [5, 6])
    @unpack
    def test_add(self, a, b):
        result = a + b
        self.assertEqual(result, a + b)

三、Python数据驱动框架DDT

DDT是一个数据驱动框架,可以将测试数据集中在一个文件中,可以在单独的文件中创建以要测试函数名称命名的CSV、JSON、EXCEL等文件,在这些文件中存储要测试的数据。这样可以让代码结构更清晰,也更适合重复测试,因为我们可以只使用一部分数据对代码进行多次测试。这里给出一个CSV的示例代码:


1,2
3,4
5,6

Python代码中读取CSV数据:


import csv
temp = []
with open('data.csv', 'r', encoding='utf-8') as myfile:
    lines = csv.reader(myfile)
    for line in lines:
        temp.append(line)

四、Pytest DDT数据驱动

DDT对于Pytest来说也同样很重要,它可以使用 @pytest.mark.parametrize 装饰器来为测试用例指定测试数据,功能与@data,@unpack相同,下面是示例代码:


import pytest
@pytest.mark.parametrize("input1, input2, expect_output", [
    (3, 5, 8),
    (-2, 5, 3),
    (6, -3, 3),
])
def test_add(input1, input2, expect_output):
    result = input1 + input2
    assert result == expect_output

五、Python中DDT驱动

在使用python的时候,需要预先安装ddt模块。ddt是Python的单元测试框架,它可以针对不同的数据场景使同一个测试用例重复执行多次,并根据数据进行断言判断。下面是使用ddt的示例代码:


import unittest
from ddt import ddt, data, unpack

@ddt
class Test_Demo(unittest.TestCase):
    @data([1, 2], [3, 4], [5, 6])
    @unpack
    def test_add(self, a, b):
        result = a + b
        self.assertEqual(result, a + b)

六、DDT数据驱动的作用

DDT可以有效地减少代码的重复量,增加测试用例的覆盖率和灵活性。在实际的测试工作中,我们通常需要重复测试某个用例的多个不同测试数据,有时我们需要测试用例的所有参数都是变量,如果每个变量都重新写一个测试用例,会使代码变得非常冗长,很难维护。而使用数据驱动模块,我们可以使用一个测试用例和很多数据来测试不同的情况。

七、DDT数据驱动原理

DDT是如何实现数据驱动的呢?当我们使用 @data 装饰器时,我们可以在这个装饰器中设置(多)个测试用例数据,每组测试用例数据都会被传递给测试方法。测试系统会对测试方法及所传递的参数实例化,并进行调用。举个例子,我们传递了两组测试用例数据给测试方法test_add(a, b),那么test_add(a, b)就会被实例化两次,每次会传递一个测试用例数据,从而实现自动化测试多组数据变量化传参的目的。

八、DDT数据驱动模式

DDT有多种数据驱动模式:列表(List)、元组(Tuple)、字典(Dict)、嵌套列表和自定义类型。我们可以根据实际测试用例的需求来选择相应的数据驱动模式。下面给出一个元组和嵌套列表的实例:


@ddt
class Test_Demo(unittest.TestCase):
    @data((1,2), (3,4), (5,6))
    def test_add_tuple(self, value):
        result = sum(value)
        self.assertEqual(result, value[0]+value[1])
   
    @data([1,2], [3,4], [5,6])
    @unpack
    def test_add_list(self, a, b):
        result = a + b
        self.assertEqual(result, a + b)

九、DDT数据驱动YAML文件选取

除了CSV、JSON、EXCEL文件,DDT还支持从YAML文件中读取测试数据。YAML文件是一种数据格式,比CSV、JSON文件更为人类可读。下面给出一个YAML的测试数据文件:


- a: 1
  b: 2
- a: 3
  b: 4
- a: 5
  b: 6

Python代码中读取YAML数据:


import yaml
temp = []
with open('data.yaml', 'r', encoding='utf-8') as f:
    data = yaml.load(f)
    for item in data:
        temp.append((item.get('a'), item.get('b')))

以上就是DDT数据驱动Python的详细阐述,希望对你有所帮助。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/199328.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-05 10:21
下一篇 2024-12-05 10:21

相关推荐

  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29

发表回复

登录后才能评论