软件测试/测试开发全日制|Pytest结合yaml实现数据驱动

简介: 软件测试/测试开发全日制|Pytest结合yaml实现数据驱动

前言

我们之前介绍过pytest的参数化,我们使用了@pytest.mark.parametrize(argnames, argvalues)来实现批量传送参数的目的,但是我们不进行数据驱动的话,我们一旦对数据进行变更,就需要在代码里对我们的参数进行逐一的修改,这对我们来说,是额外增加的工作量,而通过专门存储数据的文件来实现数据驱动,就可以节省我们的工作量,改变参数时,我们只需要对数据文件进行修改,在数据驱动测试中,yaml文件是我们最常使用的数据驱动文件之一,本文就给大家介绍一下pytest结合yaml实现数据驱动。

环境安装

我们在使用yaml之前,需要先安装好yaml的第三方库,命令如下:

pip install PyYAML

创建测试文件和数据文件

假设我们要测试一个简单的函数,比如计算两个数的和:

# code.py

def add(a, b):
    return a + b

接下来,创建一个yaml文件,用于存储测试数据:

# test_data.yaml
test_case_1:
  a: 2
  b: 3
  expected_result: 5

test_case_2:
  a: -1
  b: 10
  expected_result: 9

test_case_3:
  a: 0
  b: 0
  expected_result: 0

编写测试用例

现在,创建一个pytest测试文件,编写测试用例并读取yaml文件中的数据:

# test_code.py

import yaml
import pytest
from code import add

def load_test_data():
    with open('test_data.yaml', 'r') as file:
        test_data = yaml.safe_load(file)
    return test_data

@pytest.mark.parametrize("input_data", load_test_data().values())
def test_add(input_data):
    a = input_data['a']
    b = input_data['b']
    expected_result = input_data['expected_result']

    result = add(a, b)
    assert result == expected_result, f"计算错误:{a} + {b} 应该得到 {expected_result},实际得到 {result}"

运行测试

我们接下来可以运行测试,直接在pycharm中点击绿色三角形运行即可,我们也可以使用命令行运行,命令如下:

pytest test_code.py

pytest将会读取test_code.py文件中的测试用例,并根据test_data.yaml中提供的数据对add函数进行测试。每个测试用例都会使用yaml文件中的数据来进行数据驱动测试。

总结

结合pytestyaml,我们实现了数据驱动测试,有效地测试了同一个函数在不同输入下的行为。这种方法使得测试用例易于维护,并且可以轻松地添加更多的测试数据,确保代码的稳定性和正确性。

相关文章
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率与质量:AI驱动的自动化测试策略
【2月更文挑战第19天】 在快速迭代的软件发展环境中,传统的手动测试方法已无法满足高效率和高质量的要求。本文探讨了人工智能(AI)技术如何革新现有的软件测试流程,通过引入AI驱动的自动化测试策略,旨在提高测试覆盖率,减少人为错误,优化资源分配,并缩短产品上市时间。我们将分析AI在识别潜在缺陷、生成测试用例、执行测试以及结果分析中的应用,并讨论实施这些策略时可能遇到的挑战和限制。
152 3
|
2天前
|
存储 XML 监控
深入理解自动化测试中的数据驱动策略
【4月更文挑战第25天】 在软件测试领域,数据驱动测试(DDT)是一种高效的测试方法,它允许测试人员通过外部数据源来控制测试用例的执行。本文将探讨数据驱动测试的核心概念、实施步骤及其优势与局限性。通过具体案例分析,我们深入了解如何利用数据驱动策略提高测试覆盖率和效率,并讨论其在复杂测试场景中的应用。
|
5天前
|
前端开发 测试技术 C++
Python自动化测试面试:unittest、pytest与Selenium详解
【4月更文挑战第19天】本文聚焦Python自动化测试面试,重点讨论unittest、pytest和Selenium三大框架。unittest涉及断言、TestSuite和覆盖率报告;易错点包括测试代码冗余和异常处理。pytest涵盖fixtures、参数化测试和插件系统,要注意避免过度依赖unittest特性。Selenium的核心是WebDriver操作、等待策略和测试报告生成,强调智能等待和元素定位策略。掌握这些关键点将有助于提升面试表现。
19 0
|
22天前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
44 6
|
25天前
|
XML 存储 监控
深入理解自动化测试中的数据驱动策略
【4月更文挑战第2天】 随着软件开发周期的不断缩短和测试需求的日益增加,自动化测试已成为确保软件质量的关键手段。本文将深入探讨数据驱动测试(DDT)策略在自动化测试中的应用及其优势。数据驱动测试是一种将测试逻辑与测试数据分离的方法,通过外部数据源动态提供输入和预期结果,从而增强测试案例的灵活性和可扩展性。我们将分析数据驱动测试的核心原理、实施步骤以及如何利用它来提高测试覆盖率和效率。
|
29天前
|
存储 XML 测试技术
深入理解自动化测试中的数据驱动策略
在现代软件开发周期中,自动化测试已经成为提升效率、确保质量的关键手段。本文重点探讨了数据驱动测试(DDT)策略的核心原理及其在实际测试中的应用优势。通过将测试逻辑与测试数据分离,DDT能够增强测试案例的可重用性,简化测试维护,并提高测试覆盖率。文章详细分析了如何设计数据驱动测试框架,以及如何利用该框架进行有效的测试数据管理。同时,文中还讨论了实施DDT时可能遇到的挑战和限制,并提出了一系列解决方案。
|
1月前
|
XML 敏捷开发 数据管理
深入理解自动化测试中的数据驱动策略
在现代软件开发周期中,自动化测试是确保产品质量的关键步骤。数据驱动测试(DDT)是一种高效的自动化测试策略,它通过外部数据源来增强测试用例的灵活性和可维护性。本文将探讨数据驱动测试的核心原理、实施方法以及其在复杂测试场景中的应用优势。我们将分析真实案例,以展示如何利用数据驱动策略来提高测试覆盖率并优化回归测试流程。
|
1月前
|
存储 敏捷开发 测试技术
深入理解自动化测试中的数据驱动策略
【2月更文挑战第30天】在追求软件开发周期缩短与质量提升的当下,自动化测试已成为不可或缺的一环。本文将重点探讨数据驱动测试(DDT)策略,一种通过外部数据源来增强测试用例的方法。我们将分析数据驱动策略的优势、实施步骤以及面临的挑战,并通过具体案例展示如何在现有的自动化测试框架中集成数据驱动方法,旨在帮助读者构建更灵活、可维护且高效的自动化测试系统。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率:AI驱动的自动化测试策略
【2月更文挑战第30天】随着人工智能(AI)在软件开发周期中的日益普及,其在提高软件测试效率方面的潜力正受到越来越多的关注。本文探讨了如何通过集成AI技术来优化自动化测试流程,从而减少重复工作、提高错误检测率和加快反馈速度。我们将分析当前AI在自动化测试中的应用,并提出一系列策略以利用AI改进测试案例生成、执行和维护过程。
85 0
|
1月前
|
存储 XML 测试技术
深入理解自动化测试中的数据驱动策略
【2月更文挑战第29天】 在软件测试领域,自动化测试已成为提升测试效率和确保软件质量的关键手段。本文将重点探讨数据驱动测试(DDT)策略在自动化测试中的应用及其优势。不同于传统的摘要方式,本文将直接进入对数据驱动测试概念的剖析,以及它如何帮助测试工程师通过外部数据集来增强测试用例的可维护性和灵活性。我们将分析真实案例,展示如何实施DDT,并讨论其对测试覆盖率和可靠性的影响。

热门文章

最新文章