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

相关文章

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

python中各种常见文件的读写操作与类型转换详细指南

《python中各种常见文件的读写操作与类型转换详细指南》这篇文章主要为大家详细介绍了python中各种常见文件(txt,xls,csv,sql,二进制文件)的读写操作与类型转换,感兴趣的小伙伴可以跟... 目录1.文件txt读写标准用法1.1写入文件1.2读取文件2. 二进制文件读取3. 大文件读取3.1

SpringBoot中配置Redis连接池的完整指南

《SpringBoot中配置Redis连接池的完整指南》这篇文章主要为大家详细介绍了SpringBoot中配置Redis连接池的完整指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以... 目录一、添加依赖二、配置 Redis 连接池三、测试 Redis 操作四、完整示例代码(一)pom.

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目