当前位置: 首页 > news >正文

【Pytest】setup和teardown的四个级别

文章目录

  • 1.setup和teardown简介
  • 2.模块级别的 setup 和 teardown
  • 3.函数级别的 setup 和 teardown
  • 4.方法级别的 setup 和 teardown
  • 5.类级别的 setup 和 teardown

1.setup和teardown简介

在 pytest 中,setup 和 teardown 用于在测试用例执行前后执行一些准备和清理操作。

setup 和 teardown共有四个级别

等级说明范围
函数级别setup_function 和 teardown_function针对每个测试函数执行前和执行后进行操作。
类级别setup_class 和 teardown_class针对每个测试类执行前和执行后进行操作,它们必须是类的静态方法。
方法级别setup_method 和 teardown_method针对类中的每个测试方法执行前和执行后进行操作。
模块级别setup_module 和 teardown_modulesetup_module 和 teardown_module针对整个测试模块执行前和执行后进行操作。

2.模块级别的 setup 和 teardown

针对整个测试模块执行前和执行后进行操作。
示例:

def setup_module(module):print(f"开始执行测试模块: {module.__name__}")def teardown_module(module):print(f"测试模块 {module.__name__} 执行完毕")def test_example1():print('执行测试用例1')assert 1==1def test_example2():print('执行测试用例2')assert 2==2

运行结果:
在这里插入图片描述

3.函数级别的 setup 和 teardown

针对每个测试函数执行前和执行后进行操作。
示例:

def setup_function(function):print(f"开始执行测试函数: {function.__name__}")def teardown_function(function):print(f"测试函数 {function.__name__} 执行完毕")def test_example1():print('执行测试用例1')assert 1==1def test_example2():print('执行测试用例2')assert 2==2

运行结果:
在这里插入图片描述

4.方法级别的 setup 和 teardown

针对类中的每个测试方法执行前和执行后进行操作。
示例:

class TestClass:def setup_method(self,method):print(f"开始执行测试方法: {method.__name__}")def teardown_method(self, method):print(f"测试方法 {method.__name__} 执行完毕")def test_example1(self):print('执行测试用例1')assert 1 == 1def test_example2(self):print('执行测试用例2')assert 2 == 2

运行结果:
在这里插入图片描述

5.类级别的 setup 和 teardown

针对每个测试类执行前和执行后进行操作,它们必须是类的静态方法。
示例:

class TestClass:def setup_class(cls):print(f"开始执行测试类: {cls.__name__}")def teardown_class(cls):print(f"测试类 {cls.__name__} 执行完毕")def test_example1(self):print('执行测试用例1')assert 1 == 1def test_example2(self):print('执行测试用例2')assert 2 == 2

运行结果:
在这里插入图片描述

http://www.lryc.cn/news/545225.html

相关文章:

  • JavaScript系列03-异步编程全解析
  • Linux学习——退出vi编辑模式
  • 第2章_保护您的第一个应用程序
  • 【AGI】DeepSeek开源周:The whale is making waves!
  • Unity中动态切换光照贴图的方法
  • 第三十四:6.4.【v-model】
  • React底层常见的设计模式
  • 从零基础到通过考试
  • UniApp 按钮组件 open-type 属性详解:功能、场景与平台差异
  • 【无标题】ABP更换MySql数据库
  • 大模型微调入门(Transformers + Pytorch)
  • 【开源免费】基于SpringBoot+Vue.JS网络海鲜市场系统(JAVA毕业设计)
  • 在线会议时, 笔记本电脑的麦克风收音效果差是为什么
  • 理解文件系统
  • 第二十四:5.2【搭建 pinia 环境】axios 异步调用数据
  • Vue2+Element实现Excel文件上传下载预览【超详细图解】
  • C# 装箱(Boxing)与拆箱(Unboxing)
  • 【AD】3-10 原理图PDF导出
  • SQL命令详解之增删改数据
  • Docker 部署 MinIO 对象存储服务
  • IP段转CIDR:原理Java实现
  • 翻译: 深入分析LLMs like ChatGPT 一
  • springboot之HTML与图片生成
  • 数据结构(初阶)(三)----单链表
  • ChatGPT与DeepSeek:AI语言模型的巅峰对决
  • DaoCloud 亮相 2025 GDC丨开源赋能 AI 更多可能
  • 人工智能之数学基础:线性代数中矩阵的运算
  • (上)基于机器学习的图像识别——遥感图像分类(LeNet-5;AlexNet;VGGNet;GoogLeNet;ResNet)
  • 数据集笔记:NUSMods API
  • HTML元素,标签到底指的哪块部分?单双标签何时使用?