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

相关文章

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

Mysql如何将数据按照年月分组的统计

《Mysql如何将数据按照年月分组的统计》:本文主要介绍Mysql如何将数据按照年月分组的统计方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql将数据按照年月分组的统计要的效果方案总结Mysql将数据按照年月分组的统计要的效果方案① 使用 DA

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优