pytest参数化数据驱动(数据库/execl/yaml)

2024-04-26 16:12

本文主要是介绍pytest参数化数据驱动(数据库/execl/yaml),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 常见的数据驱动


    数据结构:
        列表、字典、json串
    文件:
        txt、csv、excel      
    数据库:
        数据库链接
        数据库提取
    参数化:
        @pytest.mark.parametrize()
        @pytest.fixture()

参数化

  • 数据驱动和@pytest.mark.parametrize参数化结合

1.数据库驱动(已安装MySQL)

安装mysqlclient模块

brew install mysql pkg-config //windows不用该步骤
pip3 install mysqlclient

import MySQLdb  # 必须要安装mysqlclient模块
import pytest# 数据库链接
conn = MySQLdb.connect(user='root',passwd='m****',host='localhost',port=3306,db='basejnu'  # 数据库database
)def get_data():query_sql = "select customer_id,account_num,customer_region_id from customer LIMIT 20"  # 获取数据lst = []cursor = conn.cursor()  # 创建游标try:cursor.execute(query_sql)r = cursor.fetchall()  # 获取customer_id,account_num数据print(r)for x in r:u = (x[0], x[1])  # 第一列和第二列lst.append(u)return lstfinally:cursor.close()conn.close()@pytest.mark.parametrize('customer_id,account_num', get_data())
def test01(customer_id, account_num):print(customer_id, account_num)if __name__ == '__main__':pytest.main(["-sv", "get_mysql.py"])

运行效果:

 2. execl/csv数据驱动 

 安装pandas模块

pip3 install pandas
import pandas as pd
import pytestdef get_data():
# execl文件将 read_csv改为 read_execl即可df = pd.read_csv('/Users/mac/Documents/study23/data_study/data/customer1997.csv', index_col=None)data = pd.DataFrame(df)  # 转化为列表data00 = data[['customer_id', 'Frequency']]  # 获取所需部分# data01 = data00.head()  # 获取全部数据data01 = data00.head(5)  #获取前5行数据print(data01)data02 = data01.valuesprint(data02)return data02class Test_csv():@pytest.mark.parametrize('id,fre', get_data())def test_002(self, id, fre):print(id)print(fre)print("*"*10)if __name__ == '__main__':pytest.main(["-sv", "get_execl.py"])

 运行效果:

3. yaml数据驱动

data_y.yaml

yaml_util.py

import yamlclass YamlUtil:def __init__(self, yaml_file):"""通过init方法把Yaml文件传入到这个类:param yaml_file:"""self.yaml_file = yaml_file# 读取Yaml文件def read_yaml(self):"""读取Yaml,对yaml反序列化,就是把我们的yaml格式转换成dict格式:return:"""with open(self.yaml_file, encoding='utf-8')as f:value = yaml.load(f, Loader=yaml.FullLoader)return value

测试用例get_yaml.py

import pytest
import os
from common.yaml_util import YamlUtil# 文件地址
realpath = os.path.abspath(os.path.join(os.path.dirname(os.path.split(os.path.realpath(__file__))[0]), '.'))
# 项目地址
project_dir = os.path.dirname(realpath)@pytest.mark.parametrize('args', YamlUtil(project_dir + '/data_study/data/data_y.yaml').read_yaml())
def test_01_huahua(args):name = args['name']password = args['password']print(name)print(password)if __name__ == '__main__':pytest.main(['-vs', "get_yaml.py"])

运行结果:

其他:DDT技术和conftest.py结合

pytest有更方便的管理数据驱动方法的办法:conftest.py

conftest.py特点:

1.conftest.py名字固定的,不可以修改

2.conftest.py文件所在目录必须存在__init__py文件

3.conftest.py文件不能被其他文件导入

4.所有同目录测试文件运行前都会执行conftest.py文件

conftest.py一般和@pytest.fixture()固件放在一起使用

conftest原理是,运行pytest项目之前,默认优先执行当前层的conftest.py文件,数据处理完后,加上固件赋予直接传参的能力.注意;如果想conftest.py对所有文件都生效的话,一般建在根目录下

这篇关于pytest参数化数据驱动(数据库/execl/yaml)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java