Python+unittest+DDT实现数据驱动测试

Python + unittest + DDT 实现数据驱动测试

数据驱动测试是一种测试方法,通过使用不同的数据集来执行相同的操作,从而验证应用程序的行为是否正确。在Python中,我们可以使用unittest和DDT库来快速实现数据驱动测试。

步骤

下面是使用Python+unittest+DDT实现数据驱动测试的步骤:

  1. 将测试数据存储在一个文件中,例如CSV文件。
  2. 编写测试用例的类,继承unittest.TestCase,并在setUp方法中初始化被测试的对象。
  3. 编写测试用例方法,使用DDT库来加载测试数据。
  4. 使用unittest的assert方法来比较实际结果和期望结果。

安装

首先,我们需要安装unittest和DDT库。可以使用pip安装。

pip install unittest ddt

示例

以下是两个使用Python+unittest+DDT实现数据驱动测试的示例。

示例1:计算器加法操作测试

代码:

import csv
import unittest
from ddt import ddt, data, unpack


def read_csv(file_path):
    test_data=[]
    with open(file_path,mode='r',encoding='utf-8-sig') as fp:
        data_from_csv=csv.reader(fp)
        for data in data_from_csv:
            test_data.append(data)
    return test_data


@ddt
class TestCalc(unittest.TestCase):
    def setUp(self):
        self.calc = Calculator()

    @data(*read_csv("testdata.csv"))
    @unpack
    def test_add(self, a, b, expected):
        self.assertEqual(self.calc.add(int(a), int(b)), int(expected))


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

测试数据文件testdata.csv:

1,3,4
-1,-3,-4
1.1,2.2,3.3

输出:

$ python test_calc.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK

示例2:登录测试

代码:

import csv
import unittest
from ddt import ddt, file_data
from selenium import webdriver


def read_csv(file_path):
    test_data=[]
    with open(file_path,mode='r',encoding='utf-8-sig') as fp:
        data_from_csv=csv.reader(fp)
        for data in data_from_csv:
            test_data.append(data)
    return test_data


@ddt
class TestLogin(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()

    @file_data("testdata.json")
    def test_login(self, username, password):
        self.driver.get("https://www.example.com/login")
        self.driver.find_element_by_name("username").send_keys(username)
        self.driver.find_element_by_name("password").send_keys(password)
        self.driver.find_element_by_name("submit").click()

        # Assert that login was successful
        self.assertTrue("Welcome" in self.driver.title)

    def tearDown(self):
        self.driver.quit()


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

测试数据文件testdata.json:

{
  "test1": [
    "user1",
    "password1"
  ],
  "test2": [
    "user2",
    "password2"
  ],
  "test3": [
    "user3",
    "password3"
  ]
}

输出:

$ python test_login.py
...
----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK

在以上两个示例中,DDT库帮助我们从CSV文件和JSON文件中读取测试数据,并使用单元测试框架来运行测试用例。使用DDT,我们可以很容易地通过更改测试数据来增加测试用例的覆盖范围。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python+unittest+DDT实现数据驱动测试 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python多线程共享变量的使用和效率方法

    关于“python多线程共享变量的使用和效率方法”的完整攻略,我们可以分为以下几个方面进行讲解: 1. 多线程共享变量的基本概念 在Python多线程编程中,当多个线程同时访问同一个变量时,就需要考虑多线程共享变量的问题。多线程共享变量是一个非常重要的问题,因为不正确的共享变量会导致程序出现竞态条件,从而导致程序出现不可预料的错误。 多线程共享变量的基本概念…

    python 2023年5月18日
    00
  • 对python 生成拼接xml报文的示例详解

    Python生成拼接XML报文的示例详解 在Python中,我们可以使用ElementTree模块来生成和拼接XML报文。本文将详细讲解ElementTree模块的使用方法,包括创建XML元素、添加子元素、设置元素属性等操作。 创建XML元素 以下是一个使用ElementTree模块创建XML元素的示例: import xml.etree.ElementTr…

    python 2023年5月15日
    00
  • python常用知识梳理(必看篇)

    以下是“Python常用知识梳理(必看篇)”的完整攻略,其中包括了变量、数据类型、运算符、条件语句、循环语句、函数、模块、异常处理等内容。同时,我也会提供两个示例来说明如何使用这些知识点。 Python常用知识梳理(必看篇) Python是一种高级编程语言,具有简单易学、读性强、功能强大等特点。本文将介绍Python的常用知识,包括变量、数据类型、运算符、条…

    python 2023年5月13日
    00
  • python模块之re正则表达式详解

    Python模块之re正则表达式详解 正则表达式是一种用于匹配字符串的强大工具,可以在Python中用于解析HTML、XML等本数据。Python中的re模块提供了正则表达式的支持,本攻略将细讲解re模块的基本用法、常用函数和示例应用。 re模块基本用法 在使用re模块之前,需要先导入该模块: import re re模块提供了一些常用的函数,用于处理正则表…

    python 2023年5月14日
    00
  • Python3 venv搭建轻量级虚拟环境的步骤(图文)

    下面我将详细讲解如何使用Python3venv搭建轻量级虚拟环境的步骤和示例。 1. 什么是Python3venv? Python3venv是Python3自带的一个虚拟环境工具,它可以帮助你创建轻量级且独立的Python环境,使得不同项目之间的依赖不会相互干扰,从而提高开发效率。 2. 如何使用Python3venv搭建虚拟环境? 使用Python3ven…

    python 2023年5月13日
    00
  • python3实现弹弹球小游戏

    下面是详细讲解“python3实现弹弹球小游戏”的完整攻略。 1. 简介 弹弹球,也叫做弹球、弹珠台等,是一种非常流行的游戏。玩家通过控制弹弹球的运动,在一个有障碍物的区域内反复弹跳,从而得到分数和奖励。 本篇攻略将使用Python3编写一个简单的弹弹球小游戏,通过学习这个小游戏的实现过程,您可以了解到一些Python3的基础知识和语法特性,同时也能够初步掌…

    python 2023年6月13日
    00
  • python爬取一组小姐姐图片实例

    Python爬取一组小姐姐图片实例 在本攻略中,我们将介绍如何使用Python爬取一组小姐姐图片。我们将提供两个示例,演示如何使用requests库和BeautifulSoup库、如何使用Scrapy框架爬取图片。 步骤1:分析目标网站 在开始之前,我们需要分析目标网站的结构和数据。我们可以使用浏览器的开发者工具来分析目标网站。在本攻略中,我们将使用http…

    python 2023年5月15日
    00
  • python中序列的逆序方式

    当我们需要对一个序列进行逆序(倒序)操作时,可以使用Python中内置函数reversed()和切片Slicing。 方法一:reversed()函数 reversed()是Python内置函数,可以用来返回序列的反向迭代器。那么如何使用reversed()逆序遍历反转一个序列呢? # 示例一:reverse a list lst = [1, 2, 3, 4…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部