pytest框架中的pytest.ini配置文件

pytest.ini是pytest的主配置文件,主要用于全局配置pytest的行为,如指定测试收集的规则、插件配置、路径忽略等。它允许我们定制pytest的运行方式,而不必在代码中硬编码这些配置。

目录

1、基本结构

2、常见配置项及使用方法

1.addopts

2.testpaths

3.python_files

4.marks

5.filterwarnings

6.norecursedirs

3. 高级配置项

4. 注意事项


1、基本结构

pytest.ini文件是一个INI格式的文件,位于项目根目录下,用于全局配置pytest的行为,项目文件结构如下:

my_project/
│
├── my_package/
│   ├── __init__.py
│   ├── module1.py
│   ├── module2.py
│   └── ...
│
├── tests/
│   ├── __init__.py
│   ├── test_module1.py
│   └── test_module2.py
│
└── pytest.ini

文件内容基本结构如下:

[pytest]
; 配置项 = 值
; 注释行使用分号;开头

2、常见配置项及使用方法

1.addopts

作用:定义pytest命令行的额外选项。
使用示例:

[pytest]
addopts = -v --tb=short --junitxml=junit-results.xml

此配置将使得pytest在运行时默认开启详细模式(-v),使用简短的追踪回溯(--tb=short),并将测试结果输出至JUnit格式的报告文件(--junitxml=junit-results.xml)。

以下是addopts在pytest.ini中一些常见且实用参数的简要概述:

-v (--verbose): 增加输出信息的详细程度,让测试报告更详尽。

-q (--quiet): 减少输出,适用于需要较少日志信息的时候。

-k EXPRESSION: 运行名称或节点id中匹配EXPRESSION的测试用例,实现条件性测试执行。

-m MARKEXPR: 根据标记表达式MARKEXPR选择性地运行测试,如-m "smoke or regression"。

-x / --exitfirst: 遇到第一个失败或错误立即停止测试执行。

--maxfail=N: 允许最多N个失败后终止测试,预防大量失败时的资源消耗。

-n NUM: 并行运行测试,NUM指定工作进程的数量,加快测试速度。

-s (--capture=no): 禁用输出捕获,让print语句直接显示,便于调试。

--junitxml=PATH: 将测试结果输出为JUnit格式的XML文件,便于CI/CD集成。

-p no:PLUGINNAME: 禁用特定的pytest插件。

--tb=STYLE: 设置 traceback(追踪回溯)样式,如short、line、native等,控制错误信息的详细程度。

2.testpaths

作用:指定pytest在哪些目录下查找测试脚本。
使用示例:

[pytest]
testpaths = tests my_tests

pytest将只在tests和my_tests目录下查找测试文件。

3.python_files

作用:定义被视为测试文件的文件名模式。
使用示例:

[pytest]
python_files = test_*.py mytests_*.py

除了默认的test_*.py和*_test.py,还将识别以mytests_开头的文件作为测试文件。

4.marks

作用:定义自定义标记及其说明。
使用示例:

[pytest]
markers =smoke: 快速验证核心功能的测试regression: 回归测试,用于确认已修复的问题不再出现

这样定义后,可以在测试函数上使用@pytest.mark.smoke或@pytest.mark.regression。

5.filterwarnings

作用:控制Python警告的处理方式。
使用示例:

[pytest]
filterwarnings =ignore::DeprecationWarning

忽略所有的DeprecationWarning警告。

6.norecursedirs

作用:指定在递归查找测试文件时应忽略的目录。
使用示例:

[pytest]
norecursedirs = .git __pycache__ .venv

忽略.git、__pycache__和.venv目录。

3. 高级配置项

xfail_strict: 控制预期失败(xfail)测试的严格模式。
python_classes: 指定测试类的命名模式。

python_functions :指定测试函数的命名模式
log_cli: 是否在命令行显示日志。
log_level: 设置日志级别。
timeout: 设置测试用例的超时时间。
插件配置: 如plugins = pytest-cov pytest-xdist等,用于启用和配置第三方插件。

具体使用如下:

[pytest]
xfail_strict=true               ; 启用严格模式,预期失败的测试将被视为失败
python_classes=Test*            ; 指定测试类以Test开头
python_functions=test_*         ; 指定测试函数以test_开头
log_cli=true                    ; 在命令行显示日志
log_level=DEBUG                 ; 设置日志级别为DEBUG
timeout=10                      ; 设置测试用例的超时时间为10秒
plugins=pytest-cov;pytest-xdist ; 启用并配置第三方插件

常用配置实例

[pytest]
#配置运行时参数
addopts = -vs
#配置发现用例的位置
testpaths = ./testcases
#配置并修改发现模块的默认规则
python_files = test_*.py
#配置并修改发现类的默认规则
python_classes = Test*
#配置并修改发现用例的默认规则
python_functions = test_*#标记用例(冒烟测试,分模块运行测试用例,接口和web分离)
markers=smoke:冒烟测试user:用户管理模块

4. 注意事项

编码:确保文件编码为UTF-8,特别是当文件中包含非ASCII字符时。
注释:使用分号;进行注释,保持配置文件的可读性。
更新性:pytest的配置选项随版本更新可能会有所变化,建议定期查阅最新文档。

希望以上内容能帮助大家对关于pytest.ini配置文件内容的基本使用有帮助

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

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

相关文章

2024年已过半,靠独立站赚钱行得通吗?

中国跨境出口电商行业近年来展现了显著的增长势头,在2017至2021年间,行业规模持续保持20%以上的同比增速。特别是在2021年,受疫情加速全球消费线上化的影响,行业规模已经突破6万亿元人民币。到了2022年,尽管面临局部封…

云原生重大事件保障预案与执行结果

一、背景 随着云计算技术的快速发展,云原生架构已成为企业数字化转型的关键驱动力。然而,云原生环境的高度动态性和复杂性使得其面临着一系列挑战,如服务稳定性、安全性以及性能优化等。为了确保云原生环境的稳定运行,并应对可能…

全新防关联技术出炉:亚马逊测评环境优化,下单成功率大提升

在竞争激烈的测评行业中,构建一个稳定且高效的环境系统成为了制胜的关键。然而,市场上现有的环境方案如虚拟机、模拟机、GCS、云手机、VPS等不仅成本高昂,而且面临着在风控严格的平台上如亚马逊难以逃脱检测的挑战,进而影响了测评…

Memory use report提示信息

Memory use report: Heap dump has been created at C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2021.3\tmp\hprof-temp\heapDump-idea-1718785956302.hprof. It will be analyzed next time you start IntelliJ IDEA.Memory use report提示信息 Memory use…

【两数之和】

两数之和 一、题目二、暴力解法三、哈希表四、map字典1.基本方法.set()添加键值对.get()通过键获取值.has()判断map是否有这个键 2.map和set的联系和区别共同点共同点MapSet 一、题目 二、暴力解法 三、哈希表 解题思路:将nums的元素依次以键值对的方式存储在map字典…

在MySQL中添加索引

在添加之前可以做下备份 mysqldump -u 用户名 -p 数据库名 表名 > 备份文件.sql在 MySQL 中,虽然可以同时执行多个 ALTER TABLE 语句,但需要注意的是,MySQL 对 ALTER TABLE 操作的并行执行有一些限制。具体来说,MySQL 在执行 …

【Linux】如何创建yum 组(yum groups)

如何创建yum 组(yum groups) 在 yum 中创建组信息需要手动编辑并创建一个组文件,然后使用 createrepo 工具生成组信息。以下是一个详细的步骤指南: 1. 创建组信息文件 首先,创建一个 XML 文件来定义组信息。例如,创建一个名为 …

HTML语言笔记

结构 C/S结构 ClientSever 客户端服务器端 需要在电脑上安装的重终端,或一个特定的客户端才能运行。 B/S结构 BrowserServer 浏览器服务器 JAVA主要后端语言,用于开发服务器端程序。 网页开发 学习内容: 语言: html cs…

java基础·小白入门(二)

目录 Java数组、字符串、正则表达式数组基本知识二维数组 字符串初始化基本用法 正则表达式相关知识点Java语言的内存分配Java的增强for循环 类和对象基本概念定义与创建应用 Java数组、字符串、正则表达式 数组 基本知识 Java中,数组元素可以为简单数据类型&…

MacOS之解决:开盖启动问题(七十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

mysql中返回日期格式带有T、Java解决返回日期格式带 ‘T‘ 问题、MySQL查询日期为什么带T、java.util.Date()类型为什么有T

文章目录 一、场景描述:Mysql返回日期格式带有T二、解决方法2.1、方法一:通过注解格式化2.2、方法二:通过全局配置2.3、方法三:查询时手动转换时间格式 三、mysql 数据库时间类型数据为什么有T3.1、什么是ISO 8601格式 四、java中…

储备教师和正式教师的区别是什么?

当谈论教育行业的未来,是否曾想过,那些被称为"储备教师"的群体,与我们熟知的"正式教师"之间,有何本质的区别? 储备教师,顾名思义,是学校为了应对未来可能的教学需求而提前招…

Redis 集群 - 数据分片算法

前言 广义的集群:只要是多个机器构成了一个分布式系统,都可以被称为集群。 狭义的集群:redis 的集群模式,这个集群模式下,主要是解决存储空间不足的问题。 Redis 集群 redis 采用主从结构,可以提高系统的可…

cs144 LAB1 基于滑动窗口的碎片字节流重组器

一.StreamReassembler.capacity 的意义 StreamReassembler._capacity 的含义: ByteStream 的空间上限是 capacityStreamReassembler 用于暂存未重组字符串片段的缓冲区空间 StreamReassembler.buffer 上限也是 capacity蓝色部分代表了已经被上层应用读取的已重组数…

神火股份电子商务平台(数字化招采平台),构建企业数字活力

为推进数字化转型升级进程,神火股份携手信源信息建设电子商务平台,近日,该平台已实现验收,为企业高质量发展注入“数字活力”。 河南神火煤电股份有限公司(简称“神火股份”)是以煤炭、发电、电解铝生产及…

2024年CCSK认证培训招生简章公开

CCSK认证培训背景 本课程旨在确保与云计算相关的从业人员对云安全威胁和云安全最佳 实践有一个全面的了解和广泛的认知。包含了广泛的云安全知识,涵 盖了体系结构、合规治理、加密和虚拟化等主题。自2010年推出以 来,成千上万的IT和安全专业人员通过CCSK…

系统架构理解

一、统一提前查好所有数据后续逻辑用到啥取啥,还是等用到对应数据的时候再查 1、用到啥查啥: 优势:减少依赖调用次数,减轻服务器压力;代码逻辑清晰,没有太多分支判断 劣势:无法避免串行调用&am…

LeetCode题练习与总结:分割回文串--131

一、题目描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 示例 1: 输入:s "aab" 输出:[["a","a","b"],["aa&q…

snmp-check一键获取SNMP信息(KALI工具系列二十一)

目录 1、KALI LINUX 简介 2、snmp-check工具简介 3、在KALI中使用onesixtyone 3.1 目标主机IP(win) 3.2 KALI的IP 4、操作示例 4.1 SNMP 检查 4.2 指定 SNMP 端口 4.3 指定社区字符串 4.4 详细输出 4.5 指定多项 5、总结 1、KALI LINUX 简介…

【Vue】登录功能中对于错误提示信息的重构

登录功能中,使用Axios 的响应拦截器对于错误提示进行重构。 原代码: //form实例统一校验 const formRef ref(null); const router useRouter(); const doLogin () > {formRef.value.validate(async (valid) > {// valid: 所有表单都通过校验 才为true//c…