【自动化测试基础】Pytest前后置处理

news/2025/1/8 15:47:06/文章来源:https://www.cnblogs.com/upstudy/p/18648788

Pytest的前后置(固件、夹具)处理

有一些初始化配置和测试之后的收尾,只需要处理一次,这个时候我们就要用到夹具。

Pytest提供了以下几种setup和teardown方法:

  • setup_functionteardown_function: 用于每个测试函数
  • setup_methodteardown_method: 用于每个测试方法(类级别)
  • setup_module 和 teardown_module: 用于每个模块
  • setup_class 和 teardown_class: 用于每个类
  • setupteardown: 用于每个测试用例(一般通过fixture实现)
"""
# 测试用例前后置固件setup和teardown使用
"""
def setup_module():print("module前置")
def teardown_module():print("module后置")# def setup_function():
#     print("函数前置")
# def teardown_function():
#     print("函数后置")
# 
# def test_03():
#     print("测试333")class TestSetupTeardown:def setup(self):print("所有用例前置,一般通过fixture实现")def setup_class(self):print("类前置")def setup_method(self):print("方法前置")def test_01(self):print("测试111")def test_02(self):print("测试222")def teardown_method(self):print("方法后置")def teardown_class(self):print("类后置")def teardown(self):print("所有用例前置,一般通过fixture实现")if __name__ == '__main__':pytest.main()       

执行结果:

Python Pytest中setup和teardown使用全攻略

继承方式实现前后置

# setup_teardown.py文件"""封装setup、teardown前置后置"""
class SetupTeardown:def setup(self):print("所有用例前置,一般通过fixture实现")def setup_class(self):print("类前置")def setup_method(self):print("方法前置")def teardown_method(self):print("方法后置")def teardown_class(self):print("类后置")def teardown(self):print("所有用例前置,一般通过fixture实现")
# 测试用例.py文件"""类继承方式"""
from setup_teardown import SetupTeardown
class TestSetupTeardown(SetupTeardown):def test_01(self):print("测试111")def test_02(self):print("测试222")if __name__ == '__main__':pytest.main()

执行结果:

使用fixture装饰器来实现部分用例的前后置

import pytest@pytest.fixture(scope="function")
def function_fixture():print("函数级fixture setup")yieldprint("函数级fixture teardown")@pytest.fixture(scope="class")
def class_fixture():print("类级fixture setup")yieldprint("类级fixture teardown")@pytest.fixture(scope="module")
def module_fixture():print("模块级fixture setup")yieldprint("模块级fixture teardown")@pytest.fixture(scope="session")
def session_fixture():print("会话级fixture setup")yieldprint("会话级fixture teardown")def test_one(function_fixture):print("执行test_one")assert Trueclass TestClass:def test_two(self, class_fixture):print("执行test_two")assert True

Pytest之Fixture前后置处理详解

前置后置实际使用场景

  • 数据库连接和关闭
  • 文件打开和关闭
  • 用例前置和后置步骤、数据处理
# test_database.py
import pytest
import sqlite3@pytest.fixture(scope="module")
def db_connection():print("创建数据库连接")conn = sqlite3.connect(":memory:")yield connprint("关闭数据库连接")conn.close()@pytest.fixture(scope="function")
def db_cursor(db_connection):cursor = db_connection.cursor()print("创建表")cursor.execute("CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT)")yield cursorprint("删除表")cursor.execute("DROP TABLE test")def test_insert(db_cursor):db_cursor.execute("INSERT INTO test (name) VALUES ('Alice')")db_cursor.execute("SELECT * FROM test")result = db_cursor.fetchall()assert len(result) == 1assert result[0][1] == 'Alice'def test_delete(db_cursor):db_cursor.execute("INSERT INTO test (name) VALUES ('Bob')")db_cursor.execute("DELETE FROM test WHERE name='Bob'")db_cursor.execute("SELECT * FROM test")result = db_cursor.fetchall()assert len(result) == 0

执行结果:

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

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

相关文章

进阶大模型开发框架LangChain

本文来自博客园,作者:王竹笙,转载请注明原文链接:https://www.cnblogs.com/edeny/p/18650785

【unity】学习制作类银河恶魔城游戏-6-

碰撞检查 控制面板定义变量射线功能创建射线实体分配射线实体调整射线编辑碰撞代码 创建地面和墙面的层判断是否碰撞到了地面这行代码的作用是:从groundCheck的位置开始,向下(Vector2.down)投射一条射线,距离为groundCheckDistance,只检测whatIsGround指定的层上的物体。…

直播预告丨社区年度交流会 《RTE 和 AI 融合生态洞察报告 2024》发布

新的一年开始,是时候再深度交流一次了!欢迎关注 1 月 4 日周六晚 社区年度交流会的 线上直播 。这将是一群 实时多模态 AI 开发者 的聚会。我们将一起探讨 Voice Agent 在 AI 陪伴助手、AI 硬件和 AI 企业服务等应用场景中的技术突破与产品创新。同时,我们也会交流 RTE 开发…

从 LB Ingress 到 ZTM:集群服务暴露新思路

12 月 28 日, KubeSphere 社区联合 Higress 社区主办的云原生 AI Meetup 广州站成功召开,我们非常荣幸邀请到CNCF Ambassador、Flomesh 社区布道师——张晓辉老师,张老师为大家带来了一场主题为「从 LB Ingress 到 ZTM:集群服务暴露新思路」的主精彩分享。以下为演讲实录,…

CH32V203F6P6-TSSOP20测试之03---三种烧录方式

CH32V203F6P6-TSSOP20支持三种下载方式:USB下载、串口下载(用串口2即8脚PA2为TX2接下载的RX,9脚PA3为RX2接下载的TX)和SW二线下载。CH32V203F6P6-TSSOP20的BOOT1内置接GND,而BOOT0外露,用户可以选择两种启动模式,因而支持USB下载和串口下载。接法可以选择下面两种方法的…

第二章 BIOS -- MBR

本文是对《操作系统真相还原第二章》学习的笔记,欢迎大家一起交流。第二章 BIOS --> MBR 本文是对《操作系统真象还原》第二章学习的笔记,欢迎大家一起交流。 第一棒 BIOS 首先我们要先明白计算机的启动过程,在 x86 模式下,开机的一瞬间,cpu 的 cs:ip 寄存器被强制初始…

Office Tool Plus v10 - Microsoft office安装使用激活一条龙

下载Office Tool Plus Office Tool Plus是一款相当牛逼的office安装工具,并且安装完了顺带激活,也可以很快捷的卸载office清除激活信息等等。 👉👉点击下载 Office Tool Plus移除老的office安装office 点击页面菜单-部署在产品这栏添加需要的产品.进行下载安装,等待即可…

a16z:小模型 + 边缘 AI 将定义 2025;音效模型 TangoFlux:3 秒钟生成 30 秒音频丨RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

mqtt应用问题

1、mqtt程序主动断开后,无法再次收到消息 解决办法:方法一、在emqx服务端中主动踢除客户端方法二、代码里 面将session设置为true,每次断开会清除会话2、正在进行过多的发布(32202)解决办法:方法一、默认支持一次新发送10条消息,最大是1000,可以设置//options.setMaxInfl…

打靶记录24——Presidential

靶机: https://www.vulnhub.com/entry/presidential-1,500/ 下载(镜像):https://download.vulnhub.com/presidential/Presidential.ova 难度:中目标:获得 Root 权限 + 2 Flag攻击方法:主机发现 端口扫描 信息收集 备份文件 子域名爆破 phpmyadmin 密码爆破 本地文件包含…

继续聊一聊sqlsugar的一个机制问题

几个月前换了新工作,从技术负责人的岗位上下来,继续回归码农写代码,在新公司中,我不是技术负责人,没太多的话语权。 公司这边项目统一都是使用了SqlSguar这个orm,我也跟着使用了几个月,期间碰见了不少奇奇怪怪的问题,甚至之前特意写文章“骂”过,但是今天要聊的这个问…

高性能MySQL(第4版)PDF、EPUB免费下载

领域经典十年后全版更新||全面拥抱8.0||重磅剖析现代云数据库与大规模运维实践||中国首批DBA精琢翻译5大头部国产数据库创始人联合力荐适读人群 :不但适合数据库管理员(DBA)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获 领域经典十年后…