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

相关文章
|
6月前
|
安全 数据管理 测试技术
告别蛮力:让测试数据生成变得智能而高效
告别蛮力:让测试数据生成变得智能而高效
580 120
|
7月前
|
存储 测试技术 API
数据驱动开发软件测试脚本
今天刚提交了我的新作《带着ChatGPT玩转软件开发》给出版社,在写作期间跟着ChatGPT学到许多新知识。下面分享数据驱动开发软件测试脚本。
266 0
|
10月前
|
人工智能 缓存 自然语言处理
别再手搓测试数据了!AE测试数据智造系统揭秘
本文介绍如何通过构建基于大语言模型的测试数据智造Agent,解决AliExpress跨境电商测试中数据构造复杂、低效的问题,推动测试效率提升与智能化转型。
别再手搓测试数据了!AE测试数据智造系统揭秘
|
分布式计算 Shell MaxCompute
odps测试表及大量数据构建测试
odps测试表及大量数据构建测试
|
存储 测试技术 API
pytest接口自动化测试框架搭建
通过上述步骤,我们成功搭建了一个基于 `pytest`的接口自动化测试框架。这个框架具备良好的扩展性和可维护性,能够高效地管理和执行API测试。通过封装HTTP请求逻辑、使用 `conftest.py`定义共享资源和前置条件,并利用 `pytest.ini`进行配置管理,可以大幅提高测试的自动化程度和执行效率。希望本文能为您的测试工作提供实用的指导和帮助。
1930 15
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
261 11
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
264 10
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
3939 1
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
1524 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
598 6

热门文章

最新文章