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

2024-01-09

在这里插入图片描述

前言

我们之前介绍过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文件中的数据来进行数据驱动测试。

总结

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

获取更多技术资料,请点击!

推荐

Python全栈开发与自动化测试开发班
由浅入深实战进阶,从小白到高手

以Python全栈开发为基础,深入教授自动化测试技能,为学员打造全面的技术能力。通过系统学习和实际项目实战,学员将具备在职场中脱颖而出的竞争力。不仅能够灵活运用Python进行开发,还能够保障项目质量通过自动化测试手段。这是一个全面提升职业竞争力的机会。

课程详情
Python开发必备基础技能与项目实战
Pvthon 编程语言/算法和数据结构/面向对象编程Web后端开发/前端开发/测试管理平台项目实战

人工智能ChatGPT实战
人工智能辅助学习各种开发和测试技能/Pytorch深度学框架/平台开发实战

数据分析与自动化办公
数据采集/Pandas与数据处理技术/ECharts与数据可视化技术/爬虫实战/自动化办公/批量文件处理

UI自动化测试与高级项目实战
Web自动化测试/App自动化测试/ PageObject设计模式

接口自动化测试
接口协议分析/Mock实战/服务端接口测试

性能测试
性能测试流程与方法/JMeter 脚本参数化/Grafana监控系统搭建

简历指导与模拟面试
1V1简历指导/模拟真实面试/测试开发岗面试全攻略名企私教服务
名企专家1v1辅导/行业专家技术指导/针对性解决工作难题/绩效提升辅导与晋升复盘

课程亮点
名企私教服务 先学习后付费 高额奖学金
专属社群+晚自习在线答疑
5V1全方位辅导作业+考试强化学习效果
简历修改 模拟面试 就业内推 面试复盘

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • iOS 位移枚举NS_OPTIONS(如何实现多个枚举值的同时传入判断)

    一 场景 当我们使用枚举这个东西时 有时需要多个枚举值任一一个满足时就ture 但是常用的枚举NS ENUM定义好的枚举只能挨个判断 写一坨就既不美观也不好阅读 如下 typedef NS ENUM NSInteger RPTestType
  • Mac/Linux虚拟机CrossOver2024新版下载使用教程

    CrossOver不像Parallels或VMware的模拟器 而是实实在在Mac OS X系统上运行的一个软件 该软件可以让用户在mac是上直接运行windows软件 本文为大家带来的是CrossOver Mac版安装教程 CrossOv
  • 打造专属个人或企业知识付费平台,核心功能设计

    在当今信息爆炸的时代 知识管理已经成为了每个人必须面对的问题 然而 市面上的知识付费平台大多数都是通用的 无法满足个性化需求 因此 明理信息科技提供了一款专属定制的适合个人的知识付费平台 核心产品能力如下 一站式线上线下课程传播 丰富的内容
  • 软件测试开发/全日制/测试管理丨持续集成、持续交付、持续部署

    持续集成 持续交付 持续部署 是构建现代软件开发流程的三大支柱 这三个概念代表了现代软件开发中重要的实践 它们旨在通过自动化和频繁的发布流程来提高开发团队的效率和软件交付的可靠性 持续集成 CI 持续集成是指开发人员将代码频繁地集成到共享的
  • 线扫相机品牌汇总(国外+国内)

    线扫相机品牌汇总 国外 国内 行者 热爱生活 22 人赞同了该文章 线扫相机也叫做线阵相机 和面阵相机一样 都是重要的工业相机 线扫相机正如其名字那样 拍照时像扫描一样 相机和被拍照物体有相对匀速运动 Perhaps the most co
  • S281 LoRa网关在智能电力监测系统中的应用

    随着能源消耗的增加和环境保护的要求 智能电力监测系统在电力行业得到了广泛的应用 作为一家领先的科技公司 钡铼技术有限公司推出的S281 LoRa网关为智能电力监测系统提供了强大的支持和解决方案 本文将重点介绍S281 LoRa网关在智能电力
  • 全方位解析d3dx9_43.dll丢失的处理方法,快速解决dll丢失问题

    当我们在Windows 10操作系统上运行游戏时 却无法找到d3dx9 43 dll文件 我们经常会遇到一些错误提示 其中之一就是 找不到d3dx9 43 dll 这个错误通常出现在运行某些游戏或应用程序时 它会导致程序无法正常运行 小编将
  • 系列一、 单例设计模式

    一 单例设计模式 1 1 概述 单例模式 Singleton Pattern 是Java中最简单的设计模式之一 这种类型的设计模式属于创建者模式 它提供了一种创建对象的最佳方式 这种模式涉及到一个单一的类 该类负责创建自己的对象 同时确保只
  • 【计算机开题报告】 网上茶叶销售平台设计与开发

    一 选题依据 简述国内外研究现状 生产需求状况 说明选题目的 意义 列出主要参考文献 1 研究背景 随着社会经济的迅速发展和科学技术的全面进步 以计算机与网络技术为基础的信息系统正处于蓬勃发展的时期 随着经济文化水平的提高 近年来 随着科学
  • 基于springboot+vue实现街球社区网站项目设计与演示【附项目源码+论文说明】

    基于springboot实现街球社区网站项目设计与演示 摘要 本文主要讲述了基于SpringBoot Vue模式的街球社区网站的设计与实现 这里所谓的街球社区网站是通过类似于百度贴吧之类的网上论坛使得所有的街球爱好者有一个可以互相交流的平台
  • Java版企业电子招投标系统源代码,支持二次开发,采用Spring cloud技术

    在数字化时代 采购管理也正经历着前所未有的变革 全过程数字化采购管理成为了企业追求高效 透明和规范的关键 该系统通过Spring Cloud Spring Boot2 Mybatis等先进技术 打造了从供应商管理到采购招投标 采购合同 采购
  • AI动作冒险电影《角斗士2:破晓之争》(上)

    AI动作冒险电影 角斗士2 破晓之争 上 在罗马帝国的疆域上 角斗士竞技场一直是民众热议的焦点 然而 当权者为了利益 将角斗士的生死视作儿戏 将人民视为取乐的工具 罗马帝国的野心在和平时期逐渐膨胀 终于引来了内战与分裂 角斗士2 破晓之争
  • 华为认证 | HCIP和HCIE难度差多了?

    许多有志于在ICT领域发展的人士 都希望获得华为的HCIP或HCIE认证 那么 考取这些认证到底 需要多少钱 HCIP和HCIE的 难度又存在怎样的差异 下面将为您揭晓答案 01 考华为HCIE多少钱 考试费用 华为HCIE认证考试的费用主
  • 【python、pytorch】

    什么是Pytorch Pytorch是一个基于Numpy的科学计算包 向它的使用者提供了两大功能 作为Numpy的替代者 向用户提供使用GPU强大功能的能力 做为一款深度学习的平台 向用户提供最大的灵活性和速度 基本元素操作 Tenors张
  • 弹窗找不到iutils.dll是怎么回事?需要怎么解决呢?分享多种方法

    在计算机使用过程中 我们经常会遇到一些错误提示 其中之一就是 iutils dll丢失 iutils dll是一款系统的动态链接库文件 主要用于支持某些软件和游戏的启动和运行 如果开机提示iutils dll丢失 可能会导致相关软件和游戏无
  • 如何查看崩溃日志

    目录 描述 思路 查看ipa包崩溃日志 简单查看手机崩溃信息几种方式 方式1 手机设置查看崩溃日志 方式2 Xocde工具 方式3 第三方软件克魔助手 环境配置 实时日志 奔溃日志分析 方式四 控制台资源库 线上崩溃日志 线上监听crash
  • 工程管理系统功能设计与实践:实现高效、透明的工程管理

    在现代化的工程项目管理中 一套功能全面 操作便捷的系统至关重要 本文将介绍一个基于Spring Cloud和Spring Boot技术的Java版工程项目管理系统 结合Vue和ElementUI实现前后端分离 该系统涵盖了项目管理 合同管理
  • 2.4G SOC收发芯片XL2412P,适用于无线键鼠,遥控器等多种场景

    XL2412P芯片是 款高性能低功耗的SOC集成无线收发芯片 集成MO核MCU 工作在2 400 2 483GHz世界通用ISM频段 该芯片集成了射频接收器 射频发射器 频率综合器 GFSK 调制器 GFSK解调器等功能模块 并且支持一对多
  • 2024年全球网安行业趋势预测TOP20 | FreeBuf年度盘点

    2023年 全球网络安全态势和2022年相比未见好转 在勒索攻击领域更是愈发严重 大量巨头型企业遭遇勒索攻击 勒索赎金金额也在持续上升 据网络安全公司Crowdstrike Holdings数据显示 针对大公司 银行 医院或政府机构的勒索攻
  • 软件测试/测试开发全日制|Pytest结合yaml实现数据驱动

    前言 我们之前介绍过pytest的参数化 我们使用了 pytest mark parametrize argnames argvalues 来实现批量传送参数的目的 但是我们不进行数据驱动的话 我们一旦对数据进行变更 就需要在代码里对我们的