Pytest精通指南(11)利用Mark标记测试用例

2024-04-15 20:36

本文主要是介绍Pytest精通指南(11)利用Mark标记测试用例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


文章目录

      • 简介
      • 应用场景
      • 标记注册流程
      • 标记注册示例
      • 获取所有标记
      • 自定义标记分类
      • 运行所有用例
      • 运行模块标记
      • 运行类标记
      • 运行多个标记
      • 验证标记重叠
      • 排除标记运行


请添加图片描述

简介

在pytest测试框架中,标记(mark)是一种用于对测试用例进行分类和标注的机制。

允许我们为测试函数添加元数据,这些元数据随后可以用于过滤排序分组或执行特定的测试子集。

标记是通过装饰器实现的,可以将它们直接应用于测试函数或类上,例如,@pytest.mark.feature可以用于标记一个测试函数属于某个特定的功能模块。
这样,当需要运行与特定功能相关的测试时,就可以通过指定-m feature参数来只执行带有该标记的测试用例。

应用场景

分类和筛选:根据功能、模块、优先级或其他属性对测试用例进行分类,并通过标记来筛选特定的测试子集。

并行执行:标记可以帮助你识别哪些测试可以并行执行,从而提高测试效率。

文档和报告:通过标记,可以为测试用例提供额外的描述或上下文,这在生成测试报告或文档时非常有用。

标记注册流程

  • pytest.ini配置文件中通过markers注册标记
  • 在模块、类、函数中应用注册的标记
  • 根据需求使用-m xxx命令运行标记的测试用例

标记注册示例

注意事项:

  • 标记名称应该使用英文,并且建议具有业务含义,这样可以更容易地理解每个标记的用途。
  • 所以自定义的标记,建议在pytest.ini配置文件中统一管理,并通过命令参数--strict-markers开启严格标记,开启后,执行pytest.ini配置文件中未注册的标记会报错,如果不开启,则只会抛出警告,而不是警告。
  • pytest.ini配置文件中的markers选项可以说是我们自定义标签的汇总和归类,方便我们清楚在项目中使用了哪些标记,而这些标记是什么意义。
[pytest]# markers选项以列表的形式管理和配置标记项
markers =# user是标记名称,:冒号后面的是标记名称的描述user: User-related test casesproduct: Product-related test casesorder: Order-related test cases

获取所有标记

执行pytest --markers可以获取所有的标记,自定义的标记展示在前。

请添加图片描述

自定义标记分类

  • 模块、函数、方法、类上都是允许注册一个或多个标记的。
  • 模块注册标记方式:pytestmark = [pytest.mark.xx1, pytest.mark.xx2]
  • 其他注册标记方式:利用装饰器完成,如@pytest.mark.xxx

test_case_01.py文件代码

import pytestpytestmark = pytest.mark.module  # 模块类标记# 可以注册多个标记,pytest.ini配置文件中存在即可
# pytestmark = [pytest.mark.module1, pytest.mark.module2]@pytest.mark.user  # 函数标记
def test_user_sign():print(f"---> test_user_sign 被调用,用户注册")@pytest.mark.user
def test_user_login():print(f"---> test_user_login 被调用,用户登录")@pytest.mark.product  # 类标记
class TestProduct:def test_create_product(self):print(f"---> test_create_product 被调用,创建产品")def test_delete_product(self):print(f"---> test_delete_product 被调用,删除产品")@pytest.mark.orderdef test_create_order(self):print(f"---> test_create_order 被调用,创建订单")@pytest.mark.orderdef test_delete_order(self):print(f"---> test_delete_order 被调用,删除订单")

test_case_02.py文件代码

def test_case_02():print(f"---> test_case_02.py 被调用")

test_case_03.py文件代码

def test_case_03():print(f"---> test_case_03.py 被调用")

运行所有用例

执行命令:pytest

执行结果:符合预期,没有被mark标记影响

请添加图片描述

运行模块标记

执行命令:pytest -m module

执行结果:符合预期,成功收集模块内所有的测试用例

请添加图片描述

运行类标记

执行命令:pytest -m product

执行结果:符合预期,成功收集类中所有的测试用例

请添加图片描述

运行多个标记

请添加图片描述

验证标记重叠

如果运行多个标记,其中标记2的作用域比标记1的作用域小时是什么情况呢?

执行命令:pytest -m "user or module"

执行结果:优先执行作用域范围大的标记下的测试用例且不会重复执行

请添加图片描述

排除标记运行

执行命令:pytest -m "not module"

执行结果:符合预期

请添加图片描述

这篇关于Pytest精通指南(11)利用Mark标记测试用例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

macOS彻底卸载Python的超完整指南(推荐!)

《macOS彻底卸载Python的超完整指南(推荐!)》随着python解释器的不断更新升级和项目开发需要,有时候会需要升级或者降级系统中的python的版本,系统中留存的Pytho版本如果没有卸载干... 目录MACOS 彻底卸载 python 的完整指南重要警告卸载前检查卸载方法(按安装方式)1. 卸载

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2

Git进行版本控制的实战指南

《Git进行版本控制的实战指南》Git是一种分布式版本控制系统,广泛应用于软件开发中,它可以记录和管理项目的历史修改,并支持多人协作开发,通过Git,开发者可以轻松地跟踪代码变更、合并分支、回退版本等... 目录一、Git核心概念解析二、环境搭建与配置1. 安装Git(Windows示例)2. 基础配置(必

在.NET项目中嵌入Python代码的实践指南

《在.NET项目中嵌入Python代码的实践指南》在现代开发中,.NET与Python的协作需求日益增长,从机器学习模型集成到科学计算,从脚本自动化到数据分析,然而,传统的解决方案(如HTTPAPI或... 目录一、CSnakes vs python.NET:为何选择 CSnakes?二、环境准备:从 Py

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke