pytest中mark的使用

在pytest中,mark(标记)是用于对测试用例进行分类、筛选或附加元数据的重要功能。以下是其核心使用方法:

1. ‌基本标记定义与使用‌

‌注册标记‌:在pytest.ini中预先定义标记(避免运行时警告):

[pytest]
markers =smoke: 冒烟测试用例slow: 执行耗时较长的用例

‌标记测试函数/类‌:

@pytest.mark.smoke
def test_login():assert True@pytest.mark.slow
class TestPerformance:def test_response_time(self):assert True

2. ‌常用内置标记‌

‌跳过测试‌:

@pytest.mark.skip(reason="功能暂未完成")
def test_unimplemented():pass

‌预期失败‌:

@pytest.mark.xfail(reason="已知兼容性问题")
def test_legacy_feature():assert False

3. ‌参数化标记(数据驱动)‌

@pytest.mark.parametrize("input,expected", [(1, 2), (3, 4)])
def test_add_one(input, expected):assert input + 1 == expected

4. ‌自定义标记的筛选‌

命令行执行特定标记的测试:

pytest -m "smoke"          # 只运行冒烟测试
pytest -m "not slow"       # 排除耗时用例
pytest -m "smoke or slow"  # 组合逻辑

5. ‌动态添加标记‌

通过钩子函数动态标记(如根据执行时间):

def pytest_collection_modifyitems(items):for item in items:if "api" in item.nodeid:item.add_marker(pytest.mark.api)

注意事项:
未注册的自定义标记会触发警告,需在pytest.ini中声明。
标记支持继承(类标记会应用到所有方法)。
可通过pytest --markers查看所有可用标记。

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

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

相关文章

STM32N6--NPU简单介绍

关键词:STM32N6、生物神经元、神经网络处理单元(NPU)、数据流处理 参考链接: RM0486 Reference manual STM32N647/657xx Arm-based 32-bit MCUsST_中文论坛【资料合集】STM32N6超全资料合集(定期更新)B站_…

一款开源免费、通用的 WPF 主题控件包

前言 今天大姚给大家分享一款开源免费(MIT License)、通用的 WPF 主题控件包:Rubyer WPF。 WPF介绍 WPF是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动…

windows安装python环境以及对应编辑器的详细流程

windows安装python环境以及对应编辑器的详细流程 一、安装 Python 环境 步骤 1:下载 Python 安装包 访问 Python 官网:https://www.python.org/downloads/windows/选择最新稳定版本(如 Python 3.12.x),点击 Download W…

高保真组件库:下拉多选

制作一个高保真的下拉多选需要具备多种交互事件。 拖拽一个文本框并命名为“下拉文本输入框”和一个向下的箭头组合在一起,外观上看起来是下拉组件。为了美观调整一些边框颜色、圆角、文字左边距等。 拖拽一个矩形作为下拉选项的容器,启动阴影xy都为0 制作下拉选项:拖拽一个…

sqli-labs靶场通关笔记:第1-4关 联合注入

第1关:单引号闭合1.这是第1关的界面,让我们以id作为参数输入,方式为数值,这里输入?id1看一下。2.显示了id1的用户名和密码。分析:在sql注入漏洞中,第一步是要寻找注入点,即可以输入参数的地方&…

和服腰封改造:3种解构主义造型的东方美学新解

和服腰封改造:3种解构主义造型的东方美学新解在东京原宿的小巷里,一场关于和服腰封的"温柔革命"正在悄然发生。年轻设计师们将传统宽腰带拆解重构,创造出既保留东方神韵又充满当代气息的造型艺术。正如一位新锐设计师所说&#xff…

什么是强化学习(RL)--3

如果reward大多数情况下都是0,只有少数是很大的值。这种情况下就是稀疏reward的问题。比如你要教机械手臂拴螺丝,只有最后把螺丝栓进去才可以,其余机械手臂的位置都不可以。额外的reward帮agent学习。reward shaping射击游戏cs,这个游戏中&am…

彩虹云商城全解源码系统|人工客服系统

核心升级亮点 人工客服系统:新增智能工单在线IM双模式多端同步:PCH5小程序APP四端数据实时互通支付升级:支持数字人民币收款安全加固:内置Web应用防火墙(WAF) 部署教程 ▶ B站视频教程 包含: 宝塔环境配置&#xf…

川翔云电脑:突破硬件极限,重构设计生产力范式

一、硬核配置:显存与算力的双重革命川翔云电脑提供从 RTX 2080 Ti 到 RTX 4090 Plus 的全系列 GPU 机型,其中旗舰级 4090 Plus 单卡配备48GB 超大显存,较传统 4090 显存翻倍,可流畅加载 1200 万面数的超复杂模型(如《黑…

深入解析 TCP 连接状态与进程挂起、恢复与关闭

文章目录深入解析 TCP 连接状态与进程挂起、恢复与关闭一、TCP 连接的各种状态1. **LISTEN**(监听)2. **SYN_SENT**(SYN 已发送)3. **SYN_RECEIVED**(SYN 已接收)4. **ESTABLISHED**(已建立&…

在mac m1基于llama.cpp运行deepseek

lama.cpp是一个高效的机器学习推理库,目标是在各种硬件上实现LLM推断,保持最小设置和最先进性能。llama.cpp支持1.5位、2位、3位、4位、5位、6位和8位整数量化,通过ARM NEON、Accelerate和Metal支持Apple芯片,使得在MAC M1处理器上…

多模态大语言模型arxiv论文略读(154)

Visual-Oriented Fine-Grained Knowledge Editing for MultiModal Large Language Models ➡️ 论文标题:Visual-Oriented Fine-Grained Knowledge Editing for MultiModal Large Language Models ➡️ 论文作者:Zhen Zeng, Leijiang Gu, Xun Yang, Zhan…

Python PDF处理库深度对比:PyMuPDF、pypdfium2、pdfplumber、pdfminer的关系与区别

Python PDF处理库深度对比:PyMuPDF、pypdfium2、pdfplumber、pdfminer的关系与区别前言1. 库的基本介绍1.1 PyMuPDF (fitz)1.2 pypdfium21.3 pdfplumber1.4 pdfminer2. 关系图谱3. 核心区别对比3.1 性能对比3.2 功能对比4. 代码示例对比4.1 基本文本提取PyMuPDFpypd…

制作 ext4 文件系统

按以下步骤操作可以将一个文件夹制作成 Android 可用的 ext4 格式的 img 文件:方法 1:使用标准 Linux 工具(推荐) 步骤 1:安装必要工具 sudo apt update sudo apt install e2fsprogs android-sdk-libsparse-utils # 适…

Flink自定义函数

一、UDF 核心原理 Flink 自定义函数(UDF)是扩展 Table API/SQL 能力的核心机制,允许将自定义逻辑嵌入查询。其设计遵循以下原则: 1. 函数类型体系类型输入输出关系核心用途标量函数(ScalarFunction)0~N 个标…

【AI学习】大模型微调实践

参加了书生・浦语(InternLM)端侧小模型论文分类微调练习打榜赛 具体的实践教程在: https://aicarrier.feishu.cn/wiki/D7kZw9Nx4iMyDnkpL0Gc5giNn5g 折腾了十多天,各种尝试,AB榜单终于进入了前十都,累死 …

ElementUI:高效优雅的Vue.js组件库

Hi,我是布兰妮甜 !在当今快节奏的前端开发领域,选择一个功能强大、设计优雅且易于使用的UI组件库至关重要。ElementUI作为基于Vue.js的知名组件库,凭借其丰富的组件体系、一致的设计语言和出色的开发体验,已成为众多企…

Java Stream流介绍及使用指南

背景在Java 8之前,处理集合数据(如List, Set, Map)通常意味着编写冗长的、以操作为中心的代码:创建迭代器、使用for或while循环遍历元素、在循环体内进行条件判断和操作、收集结果。这种方式虽然有效,但不够简洁、可读…

JDK 1.7 vs JDK 1.8

JDK版本比较 Java平台的两次重大飞跃:JDK 7的稳定优化与JDK 8的革命性创新引言:Java的进化之路Java作为企业级开发的支柱语言,其版本更新直接影响着全球数百万开发者。JDK 1.7(2011年发布)和JDK 1.8(2014年…

张量与维度

3x4x5的张量: x torch.tensor([[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20]], [[21, 22, 23, 24, 25], …