pytest不使用 conftest.py 传递配置参数并设置全局变量

1. 创建config_handler.py


import os
import yaml# 当前路径(使用 abspath 方法可通过dos窗口执行)
current_path = os.path.dirname(os.path.abspath(__file__))
# 上上级目录
ffather_path = os.path.abspath(os.path.join(current_path,"../../"))global_config_path = os.path.join(ffather_path, r"conf/config.yaml")  # 默认yaml文件路径def load_config(config_path=None):global global_config_pathif config_path:global_config_path = config_pathwith open(global_config_path, 'r', encoding='utf-8', errors='ignore') as file:data = yaml.load(file, Loader=yaml.FullLoader)return data

2. conftest.py

import pytest
import config_handlerdef pytest_addoption(parser):parser.addoption("--config", action="store",  # 定义--config参数,用于接收配置文件的路径help="Path to the configuration file")def pytest_configure(config):config_path = config.getoption("--config")config_handler.global_config_path = config_path  # 设置全局配置文件路径

 3. test_script.py 

import config_handlerdef test_example():config_data = config_handler.load_config()# 使用config_data进行测试

执行命令:pytest .\TestCases\A\test_add.py -s --config=conf/config_test.yaml

说明:

  • config_handler.py 包含加载配置文件的逻辑和全局变量的管理。
  • conftest.py :

 pytest_configure 函数用于初始化全局配置文件路径,根据命令行参数 --config 的值来设置全局变量。

pytest_addoption是一个 pytest 插件系统中的钩子函数,用于添加自定义的命令行选项。当 pytest 执行时,会调用这个函数来注册你定义的选项。

def pytest_addoption(parser):parser.addoption(...) 的结合使用,你定义了一个新的 pytest 命令行选项 --config,使得用户可以在运行 pytest 时通过命令行传递一个配置文件的路径

  • test_script.py 中的测试函数可以直接使用 config_handler.load_config() 来加载配置文件。

通过以上方式,可以根据需要选择合适的项目结构和需求的方法来传递配置参数,并在整个项目中共享和使用这些配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java查询ES报错 I/O 异常解决方法: Request cannot be executed; I/O reactor status: STOPPED

问题 ES Request cannot be executed; I/O reactor status: STOPPED 报错解决 在使用ES和SpringBoot进行数据检索时,在接口中第一次搜索正常。第二次在搜索时在控制台就会输出Request cannot be executed; I/O reactor status: STOPPED错误 原因 本文错误是因为在使…

大语言模型-GPT-Generative Pre-Training

一、背景信息: GPT是2018 年 6 月由OpenAI 提出的预训练语言模型。 GPT可以应用于复杂的NLP任务中,例如文章生成,代码生成,机器翻译,问答对话等。 GPT也采用两阶段的训练过程,第一阶段是无监督的方式来预训…

7.23 字符串简单中等 520 125 14 34

520 Detect Capital 思路: 题目:判定word :if the usage of capitals in it is right.遍历所有的string: 两种情况: 首字母capitals–>判定第二个字母是否大写–>所有字母大写 otherwise 除第一个以外全部小写&a…

spring —— AOP(各类通知)

接:spring —— AOP(前置通知) 除前置通知(Before)外,AOP 里面还有返回通知(AfterReturning)、异常通知(AfterThrowing)、后置通知(After&#x…

nginx的配置和使用

一、nginx支持win和linux版本的下载,选择合适的版本进行安装 二、配置文件注解 重点的几个参数进行注释: 1、listen 要监听的服务的端口,符合这个端口的才会被监听 server_name要监听的服务地址,可能是ip,也可能是域名&#xf…

Dav_笔记10:Using SQL Plan Management之4

SQL管理库 SQL管理库(SMB)是驻留在SYSAUX表空间中的数据字典的一部分。它存储语句日志,计划历史记录,SQL计划基准和SQL配置文件。为了允许每周清除未使用的计划和日志,SMB使用自动空间管理。 您还可以手动将计划添加到SMB以获取一组SQL语句。从Oracle Database 11g之前的…

Docker学习笔记(自用,不定期更新)

知识点: 容器是 Docker 的另一个核心概念。简单来说,容器是镜像的一个运行实例。所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层,同时,容器中的应用进程处于运行状态。 容器保护三个…

41-50题矩阵和字符串 在Java中,将大写字符转换为小写字符的方法主要有以下几种:

20240723 一、数组最后几个和字符串的两个448. 找到所有数组中消失的数字(和645. 错误的集合差不多)283. 移动零118. 杨辉三角119. 杨辉三角 II661. 图片平滑器(没看懂)598. 区间加法 II566. 重塑矩阵303. 区域和检索 - 数组不可变…

键盘是如何使用中断机制的?当打印一串字符到显示屏上时发生了什么???

当在键盘上按下一个键时会进行一下操作: 1.当按下任意一个键时,键盘编码器监控会来判断按下的键是哪个 2.键盘控制器用将解码,将键盘的数据保存到键盘控制器里数据寄存器里面 3.此时发送一个中断请求给中断控制器,中断控制器获取到中断号发送…

全球性“微软蓝屏”事件反思:如何预防大规模系统故障

写在开头 近日,由于微软视窗系统软件更新引发的全球性“微软蓝屏”事件,再次将网络安全与系统稳定性的问题推上了风口浪尖。此次事件不仅成为科技领域的热点新闻,也对全球IT基础设施的韧性与安全性进行了一次深刻的检验。美国电脑安全技术公…

Elasticsearch介绍、安装以及IK分词器 --学习笔记

Elasticsearch 是什么? Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎。它允许你以极快的速度存储、搜索和分析大量数据。Elasticsearch 基于 Apache Lucene 构建,提供了一个分布式、多租户能力的全文搜索引擎,带有 HTTP web 接口…

深入MySQL中的IF和IFNULL函数

在数据库查询中,我们经常需要根据条件来决定数据的显示方式。MySQL提供了多种内置函数来帮助我们实现这种条件逻辑,其中IF和IFNULL是两个非常有用的函数。在这篇博客中,我们将深入探讨这两个函数的用法和它们在实际查询中的应用。 IF函数 I…

笔记小结:现代卷积神经网络之批量归一化

本文为李沐老师《动手学深度学习》笔记小结,用于个人复习并记录学习历程,适用于初学者 训练深层神经网络是十分困难的,特别是在较短的时间内使他们收敛更加棘手。 本节将介绍批量规范化(batch normalization)&#xf…

React中引入使用本地图片

1、css样式中,可以写成如下: .login {// 映射路径background: url(images/img-login.png);background-size: 100% 100%; } .box{// 相对路径background: url(../assets/images/box.png);background-size: 100% 100%; }2、在jsx文…

Redis-10大数据类型理解与测试

Redis10大数据类型 我要打10个1.redis字符串(String)2.redis列表(List)3.redis哈希表(Hash)4.redis集合(Set)5.redis有序集合(ZSet)6.redis地理空间(GEO)7.redis基数统计(HyperLogLog)8.redis位图(bitmap)9.redis位域(bitfield)10.redis流(Stream) 官网地址Redis 键(key)常用案…

Odoo Registry 源码解读:前端世界的魔法师

亲爱的Odoo探险家们,准备好踏上一段奇妙的代码冒险了吗?今天,我们要深入探索Odoo前端世界的一位神秘大师——Registry。它可能不像那些花哨的UI组件那样引人注目,但要知道,真正的高手都是低调的。Registry就像是Odoo世界里的甘道夫,默默地用魔法维持着整个中土世界的平衡…

卷与nfs实现多台主机容器之间的数据共享

容器存放数据到宿主机里 数据持久化:永久保存 数据共享:容器和容器 容器和宿主机 就是宿主机里的文件夹 /var/lib/docker/volumes docker 容器:容器运行起来是一个进程,进程的数据默认都在内存里,内存里的数据停电…

鸿蒙界面开发

界面开发 //构建 → 界面 build() {//行Row(){//列Column(){//文本 函数名(参数) 对象.方法名(参数) 枚举名.变量名Text(this.message).fontSize(40)//设置文本大小.fontWeight(FontWeight.Bold)//设置文本粗细.fontColor(#ff2152)//设置文本颜色}.widt…

邮件流量分析

邮件流量分析是指对邮件系统中进出的邮件数量、类型、流向以及相关性能指标进行统计和评估的过程。这种分析有助于优化邮件系统的性能、检测异常活动、防止垃圾邮件和网络攻击,以及改善邮件营销策略。邮件流量分析可以分为几个主要方面: 邮件统计&#x…

MMROTATE的混淆矩阵confusion matrix生成

mmdetection中加入了混淆矩阵生成并可视化的功能,具体的代码在tools/analysis_tools/confusion_matrix.py。 mmrotate由于主流遥感数据集中的DOTA数据集标注格式问题,做了一些修改,所以我们如果是做遥感图像检测的Dota数据集的混淆矩阵&…