Pytest精通指南(13)Parametrize数据驱动

2024-04-16 22:28

本文主要是介绍Pytest精通指南(13)Parametrize数据驱动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


文章目录

      • 前言
      • 数据驱动
      • parametrize从yaml获取数据
      • parametrize从json获取数据
      • parametrize从excel获取数据


请添加图片描述

前言

数据驱动就是通过数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。

数据驱动测试是一种测试方法,是将测试数据与测试逻辑分开管理与维护的一种手段。

  • 测试数据可以存储在外部文件中,如EXCELJSONYAML等,而测试逻辑则编写在测试脚本中。
  • 通过读取外部文件中的测试数据,测试脚本可以执行相应的测试操作,并验证程序的输出是否符合预期。

数据驱动

少量的测试用例:

  • 可以通过代码的参数化来实现数据驱动。
  • 这意味着在代码中定义一些变量,并为这些变量提供不同的值,以模拟不同的测试场景。
  • 这样,只需编写一次测试逻辑,就可以通过更改参数值来执行多个测试用例。

大量的测试用例:

  • 建议使用结构化的文件(如EXCELJSONYAML等)来存储测试数据。

这样做的好处是:

  • 易于管理:所有数据都集中在一个或多个文件中,便于查看、修改和备份。
  • 易于扩展:随着测试数据的增加,只需在文件中添加新的数据行,而无需修改测试代码。
  • 代码和数据分离:测试逻辑和数据分开,使得代码更加清晰和可维护。

无论数据量大小,都建议将数据和代码分离。

parametrize从yaml获取数据

Python操作Yaml文件查漏补缺:Python 3 拿捏configparser和pyyaml配置文件解析库


datagram.yaml文件数据

- username: adminpassword: 123456
- username: testpassword: test

test_case_01.py文件代码

import pytest
import yaml
import os# 获取项目路径
BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(BASE_PATH)  # /Users/yangkai/PythonWorkspace/第49课:第三方库/CASE29:Pytestdef acquire_case_data(file_path):with open(file=file_path, mode='r', encoding="utf-8") as file:return yaml.safe_load(file)@pytest.mark.parametrize("data", acquire_case_data(BASE_PATH + "/datagram.yaml"))
def test_case(data):print(f"username={data['username']}, password={data['password']}")

执行结果

请添加图片描述

parametrize从json获取数据

Python操作Json文件查漏补缺:Python 从文件中读取JSON 数据并解析转存


datagram.json文件数据

[{"username": "admin","password": "123456"},{"username": "test","password": "1234"},{"username": "guest","password": "12345"}
]

test_case_02.py文件代码

import pytest
import json
import os# 获取项目路径
BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(BASE_PATH)  # /Users/yangkai/PythonWorkspace/第49课:第三方库/CASE29:Pytestdef acquire_case_data(file_path):with open(file=file_path, mode='r', encoding="utf-8") as fp:return json.load(fp)@pytest.mark.parametrize("data", acquire_case_data(BASE_PATH + "/datagram.json"))
def test_case(data):print(f"username={data['username']}, password={data['password']}")

执行结果

请添加图片描述

parametrize从excel获取数据

Python操作excel文件查漏补缺:Python 自动化与数据分析必备openpyxl模块


datagram.excel文件数据

请添加图片描述

test_case_03.py文件代码

import pytest
import openpyxl
import os# 获取项目路径
BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(BASE_PATH)  # /Users/yangkai/PythonWorkspace/第49课:第三方库/CASE29:Pytestdef acquire_case_data(file_path):# 打开现有的Excel文件(工作薄)excel_object = openpyxl.load_workbook(file_path)# 打开需要读取的工作表(sheet页)sheet_object = excel_object["Sheet1"]# 通过iter_rows()遍历获取所有数据行return [row for row in sheet_object.iter_rows(values_only=True)]@pytest.mark.parametrize("data", acquire_case_data(BASE_PATH + "/datagram.xlsx"))
def test_case(data):print(f"username={data[0]}, password={data[1]}")

执行效果

请添加图片描述

这篇关于Pytest精通指南(13)Parametrize数据驱动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/910069

相关文章

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编