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

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键