2、pytest核心功能(进阶用法)

目录

1、标记(Markers):

自定义插件

内置标记

2、夹具(Fixtures):

夹具得用法

夹具作用域

3、钩子(hook):


这篇是最重要的 测试文件中需要用到的 总的来说 有以下几个点 mark、fixture、hook、参数化、各种插件

1、标记(Markers):

  • 自定义插件

自定义标记得用途是筛选用例,只执行部分用例,共分为三个步骤

  1. 在pytest.init注册标记
     
    [pytest]addopts = -vs   # addopts 用于指定默认的命令行选项markers =login: 登录相关db: 数据库相关upload: 上传相关
  2. 在用例中通过装饰器添加标记
     
    @pytest.mark.db
    def test_example():print('使用数据库')
  3. 在命令行参数中加-m使用标记
     
    [pytest]addopts = -vs -m 'db or login'# -v(verbose 模式)用于显示详细的测试执行信息(包括每个测试用例的名称和状态)
    # -s(关闭输出捕获)允许测试中的 print 或日志输出直接显示在控制台(默认情况下 pytest 会捕获这些输出)。
    # -m(标记筛选)只运行被标记为 @pytest.mark.db 或 @pytest.mark.login 的测试用例。
  • 内置标记

内置标记由pytest注册的,目的不是为了筛选用例,而是对用例进行特殊处理,这种方法不需要注册可以直接使用

  • @pytest.mark.skip     > 无条件跳过用例
  • @pytest.mark.skipif   > 有条件跳过用例
  • @pytest.mark.xfail     > 预期失败
     
    @pytest.mark.skip(reason="Not implemented yet")
    def test_skip():assert 1 + 1 == 2

2、夹具(Fixtures):

  • 夹具得用法

    @pytest.fixture
    def numbers():print('我是前置代码 用例运行之前执行')yieldprint('我是后置代码 用例运行之前执行')
    其实这个东西你就理解成unittest框架中的setup teardown就是测试用例执行之前 执行之后自动运行的代码
     
  • 夹具作用域

        pytest中夹具的作用域 主要有五种: 

  1. function(默认作用域,每个测试函数都会调用一次夹具。
  2. class(每个测试类调用一次夹具
  3. module(每个测试模块也就是当前的测试文件调用一次夹具。
  4. package(每个目录调用一次夹具。
  5. session(整个测试会话也就是所有的测试用例只调用一次夹具
import pytest# function scoped fixture
@pytest.fixture(scope="function")
def func_scope_fixture():print("Setup for each test function")yieldprint("Teardown for each test function")

附:

这个实际运用中,例如在接口自动化测试中, 可以通过fixture提供全局的session
实现TCP复用,参数共享,cookies关联,日志记录,BaseURL

3、钩子(hook):

钩子:被pytest自动调用的函数,在 pytest 中,钩子(hook)是特殊的插件机制,可以让你在测试运行的不同阶段插入自定义行为。

通过使用钩子,你可以扩展或修改 pytest 的默认行为。例如,你可以在每个测试开始或结束时执行特定的操作,或在测试收集阶段修改发现的测试项。
为了让 pytest 使用这些钩子,你需要将这些代码放在项目中的 conftest.py 文件中。pytest 会自动发现并应用 conftest.py 中定义的钩子。

  • 写在confest文件中
  • 符合hook规范定义import _pytest.hookspec
# conftest.py
def pytest_configure(config):print("Configuring the test session.")def pytest_sessionstart(session):print("Test session starting.")


参数化和插件下篇说 写不动了hh
3、pytest实现参数化-CSDN博客

4、pytest常用插件-CSDN博客

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

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

相关文章

《TCP/IP网络编程》学习笔记 | Chapter 21:异步通知 I/O 模型

《TCP/IP网络编程》学习笔记 | Chapter 21:异步通知 I/O 模型 《TCP/IP网络编程》学习笔记 | Chapter 21:异步通知 I/O 模型同步与异步同步异步对比同步 I/O 的缺点异步 I/O 的优点 理解异步通知 I/O 模型实现异步通知 I/O 模型WSAEventSelect 函数和通知…

【2025】基于springboot+vue的医院在线问诊系统设计与实现(源码、万字文档、图文修改、调试答疑)

基于Spring Boot Vue的医院在线问诊系统设计与实现功能结构图如下: 课题背景 随着互联网技术的飞速发展和人们生活水平的不断提高,传统医疗模式面临着诸多挑战,如患者就医排队时间长、医疗资源分配不均、医生工作压力大等。同时,…

报错 standard_init_linux.go:228: exec user process caused: exec format error

docker logs 容器名 报错: standard_init_linux.go:228: exec user process caused: exec format error 或者 standard_init_linux.go:228: exec user process caused: input/output error 排查思路 1、检查源镜像的框架是否正确,是否amd64&#x…

26考研——图_图的存储(6)

408答疑 文章目录 二、图的存储图的存储相关概念邻接矩阵存储方式邻接矩阵的定义顶点的度计算邻接矩阵的特点邻接矩阵的局限性 应用场景邻接矩阵的幂次意义(了解即可) 邻接表存储方式邻接表定义邻接表结构邻接表的特点 邻接矩阵和邻接表的适用性差异十字…

机器学习(八)

一,基于协同过滤的推广算法: 算法原理: 基于用户的协同过滤(计算用户相似度→找出相似用户→根据相似用户的喜好推荐物品) 基于物品的协同过滤(计算物品相似度→找出用户喜欢的物品→推荐相似物品) 构造矩阵进行分解(将用户-物品评分矩阵分解…

云原生算力引擎:分布式推理的流体动力学

引言:算力黑洞的引力扰动 OpenAI推理集群日处理4.5亿次请求,CUDA 12.3实现μs级张量切换。特斯拉Dojo超算芯片间延迟0.5ns,阿里巴巴PAI平台节省58%训练时长。HuggingFace模型库下载量突破3亿次,AWS Inferentia芯片能效比提升8倍。…

流量分析2

一,webshell流量 [GKCTF 2021]签到 先看协议分级,大部分是tcp,里面有http的基于的行文本数据占了很大的比重,看看里面有什么 过滤http的流量 点击一条流量,里面的内容进去后面有基于行的文本数据, 先解he…

解锁智能协作:蓝耘平台如何打破应用壁垒,实现无缝联动

在当今快速发展的数字化时代,企业面临着越来越复杂的应用架构与系统集成挑战。传统的孤立系统已无法满足现代企业对于高效协作与数据共享的需求,因此,如何实现不同应用系统间的无缝联动,成为了数字化转型的关键课题。蓝耘平台作为…

3月25号

添加图片的一些例子: // 创建一个二维数组,用来管理数据int[][] data new int[4][4]; // 记录空白方块的位置int x0;int y0; // 定义一个变量,记录当前展示图片的路径String path"E:\\java\\jigsawgame\\路飞\\路飞"; // 加载图片细节: // …

单片机和微控制器知识汇总——《器件手册--单片机、数字信号处理器和可编程逻辑器件》

目录 四、单片机和微控制器 4.1 单片机(MCU/MPU/SOC) 一、定义 二、主要特点 三、工作原理 四、主要类型 五、应用领域 六、选型与设计注意事项 七、发展趋势 4.2 数字信号处理器(DSP/DSC) ​编辑​编辑 一、定义 二、工作原理 三、结构特点 四、应用领域 五、选型与设计注…

迷宫问题——(java)(bfs)

2.走迷宫 - 蓝桥云课 bfs :我的理解就是按层数便利,便利完一层再遍历下一层 bfs:一般用来求解权相等的最短路径和最小操作数的问题 一般使用队列来实现 1.初始化队列 先将起始节点放入队列中 2.从队列中取出一个没有访问过的节点,将该节点的访问状态…

Axure大屏可视化模板:赋能多领域,开启数据展示新篇章

在当今这个数据爆炸的时代,数据已经成为各行各业的核心资产。然而,如何高效、直观地展示数据,并将其转化为有价值的决策依据,成为了许多企业和组织面临的共同挑战。Axure大屏可视化模板,作为一款强大的数据展示工具&am…

Linux--进程控制

ok&#xff0c;我们今天学习Linux中的进程控制&#xff08;进程创建、终止、等待、替换&#xff09; 进程创建 fork函数 在linux中fork函数是⾮常重要的函数&#xff0c;它从已存在进程中创建⼀个新进程。新进程为子进程&#xff0c;⽽原进程为父进程。 #include <unist…

【开源宝藏】用 JavaScript 手写一个丝滑的打字机动画效果

你当前项目实现了一个非常丝滑的 打字机文字效果动画&#xff0c;使用的是自定义的 typical.js 脚本。下面我将给出一份逐步拆解的中文教程&#xff0c;帮你或其他初学者快速上手并自定义这个打字效果。 ✨ 最终效果 打开页面后&#xff0c;中央会逐字显示&#xff1a; Hello…

UE4学习笔记 FPS游戏制作17 让机器人持枪 销毁机器人时也销毁机器人的枪 让机器人射击

添加武器插槽 打开机器人的Idle动画&#xff0c;方便查看武器位置 在动画面板里打开骨骼树&#xff0c;找到右手的武器节点&#xff0c;右键添加一个插槽&#xff0c;重命名为RightWeapon&#xff0c;右键插槽&#xff0c;添加一个预览资产&#xff0c;选择Rifle&#xff0c;根…

气象可视化卫星云图的方式:方法与架构详解

气象卫星云图是气象预报和气候研究的重要数据来源。通过可视化技术,我们可以将卫星云图数据转化为直观的图像或动画,帮助用户更好地理解气象变化。本文将详细介绍卫星云图可视化的方法、架构和代码实现。 一、卫星云图可视化方法 1. 数据获取与预处理 卫星云图数据通常来源…

26考研——树与二叉树_树、森林(5)

408答疑 文章目录 二、树、森林树的基本概念树的定义和特性树的定义树的特性 基本术语树的基本术语和概念祖先、子孙、双亲、孩子、兄弟和堂兄弟结点的层次、度、深度和高度树的度和高度分支结点和叶结点有序树和无序树路径和路径长度 森林的基本术语和概念森林的定义森林与树的…

为何服务器监听异常?

报错&#xff1a; 执行./RCF后出现监听异常--在切换网络后&#xff0c;由于前面没有退出./RCF执行状态&#xff1b;重新连接后&#xff0c;会出现服务器监听异常 原因如下&#xff1a; 由于刚开始登录内网&#xff0c;切换之后再重新登录内网&#xff0c;并且切换网络的过程中…

ROS2 架构梳理汇总整理

文章目录 前言正文机器人平台整体架构&#xff08;ROS2&#xff09;图一、个人理解整体架构 ROS2架构图一、个人理解ROS2整体架构图二、开发者整理ROS2整体架构图三、Intel整理ROS2整体架构图四、DDS具体架构说明 ROS2 Control架构图一、官方整整理ROS2 Control整体架构 总结 前…

定长内存池原理及实现

目录 一、池化技术 二、内存池 三、内存池主要解决的问题 四、定长内存池的实现 1.定长内存池的原理 2.框架 3.Delete实现 4.New实现 5.性能测试 五、源码 FixedMemoryPool.h test.cc 一、池化技术 所谓“池化技术”&#xff0c;就是程序先向系统申请过量的资源&…