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

相关文章

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

ubuntu系统使用官方操作命令升级Dify指南

《ubuntu系统使用官方操作命令升级Dify指南》Dify支持自动化执行、日志记录和结果管理,适用于数据处理、模型训练和部署等场景,今天我们就来看看ubuntu系统中使用官方操作命令升级Dify的方... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。

C++迭代器失效的避坑指南

《C++迭代器失效的避坑指南》在C++中,迭代器(iterator)是一种类似指针的对象,用于遍历STL容器(如vector、list、map等),迭代器失效是指在对容器进行某些操作后... 目录1. 什么是迭代器失效?2. 哪些操作会导致迭代器失效?2.1 vector 的插入操作(push_back,

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

C#实现高性能Excel百万数据导出优化实战指南

《C#实现高性能Excel百万数据导出优化实战指南》在日常工作中,Excel数据导出是一个常见的需求,然而,当数据量较大时,性能和内存问题往往会成为限制导出效率的瓶颈,下面我们看看C#如何结合EPPl... 目录一、技术方案核心对比二、各方案选型建议三、性能对比数据四、核心代码实现1. MiniExcel

springboot集成Lucene的详细指南

《springboot集成Lucene的详细指南》这篇文章主要为大家详细介绍了springboot集成Lucene的详细指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起... 目录添加依赖创建配置类创建实体类创建索引服务类创建搜索服务类创建控制器类使用示例以下是 Spring

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮