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

相关文章

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.