首页 > 其他分享 >软件测试/测试开发全日制|Pytest结合yaml实现数据驱动

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

时间:2024-01-10 18:01:43浏览次数:24  
标签:expected pytest yaml Pytest result test data 软件测试

软件测试/测试开发全日制|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,我们实现了数据驱动测试,有效地测试了同一个函数在不同输入下的行为。这种方法使得测试用例易于维护,并且可以轻松地添加更多的测试数据,确保代码的稳定性和正确性。


标签:expected,pytest,yaml,Pytest,result,test,data,软件测试
From: https://blog.51cto.com/u_15640304/9183824

相关文章

  • 软件测试/测试开发全日制|Pytest结合Excel实现数据驱动
    前言数据驱动测试是一种有效的测试方法,可以使用不同的输入数据运行相同的测试用例。结合pytest和Excel表格可以方便地实现数据驱动测试。在这篇文章中,我们将介绍如何使用pytest和Excel实现数据驱动测试。环境准备在实现Excel的数据驱动之前,我们首先要安装Python操作excel的第三方库......
  • 软件测试分析报告
    ......
  • 软件测试/测试开发/全日制|Pytest测试用例调度与运行
    前言Pytest是一个功能强大的Python测试框架,它具有灵活的测试用例调度和运行机制。在本文中,我们将深入了解Pytest是如何收集、选取和运行测试用例的。测试用例的收集在Pytest中,测试用例是通过函数来表示的。为了进行测试,Pytest需要收集这些测试函数。默认情况下,Pytest会在......
  • 软件测试/人工智能/全日制测试开发|利用ChatGPT自动生成自动化测试脚本
    自动化测试是软件测试过程中不可或缺的一部分,它能够提高测试效率,减少测试成本,保障软件质量。然而,编写和维护自动化测试脚本仍然是一个具有挑战性的任务,需要花费大量的时间和精力。学会借助ChatGPT自动生成自动化测试脚本,就可以减少编写自动化脚本的工作量,提高测试效率。如何借助Cha......
  • 软件测试计划
    ......
  • 软件测试/测试开发/全日制 |你知道该如何制定合理的职业规划吗?
    职业规划是每个职场人士都需要认真思考和制定的重要事项。无论你是刚入职场的新人,还是在职业生涯中迈入新的阶段,都需要有清晰的目标和规划,以更好地实现个人职业发展。我们为您提供了一个绝佳的机会参加【职业规划公开课】,让您从中受益匪浅。【职业规划公开课】即将开讲,我们邀请了霍......
  • 深入了解Pytest中的Mocking:简化测试,避免依赖问题
    在软件开发中,测试是确保代码质量的关键步骤之一。而在测试中,经常需要模拟(Mock)一些对象或函数,以确保测试的独立性和可靠性。在Pytest中,Mocking是一个强大的工具,能够简化测试过程,避免对外部依赖的影响。什么是Mocking?Mocking是一种用于测试的技术,它允许我们替代实际对象或函数,以便模......
  • 软件测试/测试开发/全日制|pytest如何标记测试用例
    前言在pytest中,有时候我们并不需要对所有的用例全部执行。pytest提供了一种机制:有选择的挑选用例去执行,即标记测试函数。下面详细介绍几种方法给函数标记。使用pytest.mark在函数上进行标记标记格式@表示这是一个装饰器,pytest.mark是pytest固定的写法,mark_name可以使用自定义标记......
  • 软件测试/测试开发全日制培训|Pytest跳过用例和失败重试
    前言在我们日常进行自动化测试时,经常会遇到功能阻塞,未实现或者环境有问题等等原因,一些用例执行不了,如果我们注释掉或删除掉这些测试用例,后面可能还要进行恢复操作,这个时候pytest的跳过测试功能就能帮助我们,先跳过,等到问题解决时,恢复执行即可;同时我们还有可能会遇到需要对失败用例重......
  • 软件测试/测试开发/全日制|Pytest如何灵活地运行用例
    前言Pytest能够满足我们对单元测试框架的许多要求,它简洁易用,同时提供了丰富的功能来进行测试用例的管理和执行。在本文中,我们将深入探讨如何使用Pytest运行多条测试用例、测试文件或测试包,并且指定运行特定的测试用例,并对执行结果进行分析。运行多条测试用例/文件/包Pytest具备......