Pytest精通指南(04)前后置和测试用例执行优先级


文章目录

      • Pytest 固件核心概念
      • Pytest 固件原理
      • Pytest 固件分类
      • 方法级
      • 函数级
      • 类级
      • 模块级
      • 夹具优先级
      • 测试用例执行优先级
      • 固件不仅如此后续大有文章


请添加图片描述

Pytest 固件核心概念

pytest 测试框架中,固件是一个核心概念;

它是一种特殊的函数,用于在测试之前和之后设置和清理测试环境。

固件可以确保测试在一致和可预测的环境中执行,同时它们也可以跨多个测试函数、类和会话共享。

官方标注叫固件,但这词不太好理解,大家都称之为夹具,想象一下汉堡包就明白夹具的含义了。

Setup(设置):

  • pytest 中,setup 通常指的是在每个测试之前执行的一些准备工作,例如初始化变量、打开文件、连接到数据库等。
  • setup 方法可以定义在测试模块、测试类、测试函数或测试方法级别。

Teardown(拆卸):

  • teardown 是指在每个测试执行完成后进行的一些清理工作,例如关闭文件、断开数据库连接、释放资源等。
  • setup 一样,teardown 方法也可以定义在测试模块、测试类、测试函数或测试方法级别。

Pytest 固件原理

检索和执行固件:

  • pytest 遇到一个测试函数或方法时,会根据作用域规则来检索并执行相应的 setup 方法。

    setup方法用于在每个测试之前设置测试环境。

  • 一旦测试函数或方法执行完毕,pytest 会按照相反的作用域顺序执行相应的 teardown 方法。

    teardown 方法用于在每个测试之后清理测试环境

固件作用域:

  • setupteardown 方法的作用域决定了它们在哪里被调用。pytest 支持以下作用域:
  • 函数级(function scope): setupteardown 仅在单个测试函数或方法之前和之后执行。
  • 类级(class scope): 如果在一个测试类中定义了 setup_classteardown_class 方法,则这些方法会在类中的所有测试方法之前和之后执行一次。
  • 模块级(module scope): 如果在模块级别定义了 setup_moduleteardown_module 方法,则这些方法会在整个模块中的所有测试之前和之后执行一次。
  • 会话级(session scope): setup_sessionteardown_session 在整个测试会话开始时和结束时执行一次。

固件执行顺序:

  • 当存在多个作用域级别的 setupteardown 方法时,它们的执行顺序遵循以下规则:
  • 会话级setup_session -> 测试 -> teardown_session
  • 模块级setup_module -> 模块内测试 -> teardown_module
  • 类级setup_class -> 类内测试 -> teardown_class
  • 函数级setup -> 测试函数 -> teardown

Pytest 固件分类

类型函数描述
方法级setup_method / teardown_method在类中的每个测试方法之前/之后执行
函数级setup_function / teardown_function在类外的每个测试函数之前/之后执行
类级setup_class / teardown_class在类中的所有测试方法运行之前/之后执行一次
模块级setup_module / teardown_module在整个模块的所有测试运行之前/之后执行一次

方法级

请添加图片描述

函数级

请添加图片描述

类级

请添加图片描述

模块级

请添加图片描述

夹具优先级

请添加图片描述

测试用例执行优先级

示例代码

import pytestdef addition(x, y):return x + ydef test_01_a():print("正在执行 test_a 函数...")assert addition(3, 5) == 8class TestClassCase01:@staticmethoddef setup_method():print('\nsetup_method被调用,前置执行')@staticmethoddef teardown_method():print('\nteardown_method被调用,后置执行')def test_01_b(self):assert "a" in "apple"def test_01_e(self):assert "p" in "apple"def test_01_d(self):assert "l" in "apple"def test_01_c(self):assert "e" in "apple"if __name__ == '__main__':pytest.main()

执行结果

请添加图片描述

固件不仅如此后续大有文章

暂略

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

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

相关文章

蓝桥杯物联网竞赛_STM32L071KBU6_全部工程及国赛省赛真题及代码

包含stm32L071kbu6全部实验工程、源码、原理图、官方提供参考代码及国、省赛真题及代码 链接:https://pan.baidu.com/s/1pXnsMHE0t4RLCeluFhFpAg?pwdq497 提取码:q497

【Python】报错ModuleNotFoundError: No module named fileName解决办法

1.前言 当我们导入一个模块时: import xxx ,默认情况下python解释器会搜索当前目录、已安装的内置模块和第三方模块。 搜索路径存放在sys模块的path中。【即默认搜索路径可以通过sys.path打印查看】 2.sys.path.append() sys.path是一个列表 list ,它里…

JVM常用参数一

jvm启动参数 JVM(Java虚拟机)的启动参数是在启动JVM时可以设置的一些命令行参数。这些参数用于指定JVM的运行环境、内存分配、垃圾回收器以及其他选项。以下是一些常见的JVM启动参数: -Xms:设置JVM的初始堆大小。 -Xmx&#xff1…

证书生成和获取阿里云备案获取密钥流程

1.在java文件夹下 输入 cmd 打开命令行窗口 2. keytool -genkey -alias 证书名 -keyalg RSA -keysize 2048 -validity 36500 -keystore 证书名.keystore 输入这一行,把证书名三个字 改成 项目的名称(例如:D23102802) 3. 密码默认填…

天工 AI 爆赞的数据分析能力

分享一个 AI 应用。 天工 AI 天工AI - 首页 (tiangong.cn) 可以上传数据,给出数据分析命令,并能出图。 数据分析师岌岌可危。 又知道其他好用的数据分析应用么,可以告诉我下。

vscode + wsl1 搭建远程C/C++开发环境

记录第一次搭建环境过程。 如何选择开发环境 搭建C/C开发环境有很多种方式,如 MinGW vscode(MinGW 是GCC的Windows版本,本地编译环境)SSH隧道连接 vscode(远程Linux主机)wsl vscode(远程Li…

Axios网络请求

Axios网络请求主要用于前后端请求,前后端分离时前端需要通过url请求后端的接口,并且处理后端传过来的数据。 Axios官网教程 安装 npm install axios在main.js导入 import axios from axios;//声明一个http变量!!&#xff01…

初步了解Zookeeper

目录 1. Zookeeper定义 2. Zookeeper工作机制 3. Zookeeper特点 4. Zookeeper数据结构 5. Zookeeper应用场景 5.1 统一命名服务 5.2 统一配置管理 5.3 统一集群管理 5.4 服务器动态上下线 5.5 软负载均衡 6. Zookeeper 选举机制 6.1 第一次启动选举机制 6.2 非第一…

分类预测 | Matlab实现KPCA-IDBO-LSSVM基于核主成分分析和改进蜣螂优化算法优化最小二乘支持向量机分类预测

分类预测 | Matlab实现KPCA-IDBO-LSSVM基于核主成分分析和改进蜣螂优化算法优化最小二乘支持向量机分类预测 目录 分类预测 | Matlab实现KPCA-IDBO-LSSVM基于核主成分分析和改进蜣螂优化算法优化最小二乘支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述…

【Python数据分析】让工作自动化起来,无所不能的Python

这里写目录标题 前言一、Python是办公自动化的重要工具二、Python是提升职场竞争力的利器三、Python是企业数字化的重要平台四、Python是AI发展的重要通道之一编辑推荐内容简介作者简介前言读者对象如何阅读本书目录 前言 随着我国企业数字化和信息化的深入,企业对…

大屏可视化展示平台解决方案(word原件获取)

1.系统概述 1.1.需求分析 1.2.重难点分析 1.3.重难点解决措施 2.系统架构设计 2.1.系统架构图 2.2.关键技术 2.3.接口及要求 3.系统功能设计 3.1.功能清单列表 3.2.数据源管理 3.3.数据集管理 3.4.视图管理 3.5.仪表盘管理 3.6.移动端设计 3.1.系统权限设计 3.2.数据查询过程设…

【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器

【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器 文章目录 【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器一、介绍二、联系工作三、方法四、实验结果 Multi-class Token Transformer for Weakly Supervised Semantic Segmentation 本文提出了一种新的基于变换…

ONERugged车载平板电脑厂家丨工业车载电脑优势体现丨3年质保

作为现代社会中必不可少的出行工具,汽车不仅仅是代步工具,更是我们生活中的重要一部分。而在如此多功能的汽车内,一款高可靠性、适应不同行业应用的车载平板电脑成为了当下的热门选择。ONERugged车载平板电脑以其卓越的品质和强大的功能而备受…

Java前置一些知识

文章目录 搭建Java环境安装path环境变量Java技术体系 Java执行原理JDK组成跨平台Java内存分配 IDEA管理Java程序 搭建Java环境 安装 oralce官网下载 JDK17 Windows 傻瓜式的点下一步就行,注意:安装目录不要有空格、中文 java 执行工具 javac 编译工具…

MWeb Pro For Mac v4.5.9 强大的 Markdown 软件中文版

MWeb 是专业的 Markdown 写作、记笔记、静态博客生成软件,目前已支持 Mac,iPad 和 iPhone。MWeb 有以下特色: 软件下载:MWeb Pro For Mac v4.5.9 软件本身: 使用原生的 macOS 技术打造,追求与系统的完美结合…

为什么需要网络切片?

网络切片是电信领域的一个突破性概念,它允许将物理网络基础设施划分为多个虚拟网络,称为切片。每个切片作为一个独立的网络运行,拥有自己的专用资源和定制的特性,满足不同应用、行业或用户的特定需求。 将网络切片视为在共享物理…

Linux云计算之Linux基础3——Linux系统基础part-2

1、终端、shell、文件理论 1、终端 终端(terminal):人和系统交互的必要设备,人机交互最后一个界面(包含独立的输入输出设备) 物理终端(console):直接接入本机器的键盘设备和显示器虚拟终端(tty):通过软件…

数据绑定多级对象属性时的报错解决

数据绑定多级对象属性时的报错解决 (1)例子如下: (2)当syncObjForm被后台数据赋值时,会产生报错: (3)原因就是: 模板在渲染时,读取对象中的某个…

普通人怎么赚钱?2024普通人做什么好?2024创业项目小成本!2024创业新项目新商机!2024做什么行业前景好?

普通人真的想赚钱,必须得去赚看得见的钱。什么是看得见的钱?打个比方卖一份炒粉,成本是三块,卖十块钱,一天卖出去100份,那一天就赚700块钱,而不是去跟人合伙,你连钱都没赚到&#xf…

【matlab】如何解决打开缓慢问题(如何让matlab在十几秒内打开)

【matlab】如何解决打开缓慢问题(如何让matlab在十几秒内打开) 找到我们解压缩时Crack中的license_standalone.lic文件,将其拷贝 在安装matlab的路径下新建一个文件,粘贴上面的license_standalone.lic文件 在桌面鼠标移动到matl…