自动化学习2:pytest的高级用法(mark标记/fixture/hook)

一.mark的用法

概念:Pytest提供的mark标记,允许我们标记测试函数,测试类和整个模块。通过不同的标记实现不同的运行策略,如标记冒烟测试用例。

1.注册标记

可以在pytest.ini文件注册自定义标记

除了自己注册的标记外,pytest还内置了一些标记:跳过,预期失败,参数化,调用fixture

第三方插件,也会内置一些标记:执行顺序,执行依赖,失败重试

2.贴上标记(装饰器)

  • 使用装饰器@pytest.mark.markname标记测试函数,测试类。
  • 一个mark可以标记多个测试函数,一个测试函数可以使用多个mark可以
import pytest# 可标记多个
@pytest.mark.api
@pytest.mark.ui
def test01():  # 函数(写在类外边是函数)assert 1 == 1  # 测试通过class Test:@pytest.mark.e2edef test01(self):# 方法(写在类里边带有self传递的是方法)assert 1 == 2  # 测试失败

3.筛选标记

①仅执行api标记的用例 / 仅执行api或e2e标记的用例

②pytest --markers 可以查看所有的mark标签,包括内置标记和自定义标记

pytest -m api  #执行单个
pytest -m 'api or ui' # 执行两个
pytest --markers # 查看所有标记

二.fixture

1.概念:自动的在用例之前,之后完成,用于测试环境的构建和销毁;使用生成器实现前置,后置的分离

2.两种实现方式:

  • 一种是xunit-style,跟unittest框架的机制非常相似,即setup/teardown系列

  • 一种是它自己的fixture机制,以@pytest.fixture装饰器来申明

3.fixture与unnitest的传统单元测试(setup/teardown)区别:

  • 有独立的命名,并通过声明它们从测试函数、模块、类或整个项目中的使用来激活。
  • 按模块化的方式实现,每个fixture都可以互相调用。
  • fixture的范围从简单的单元测试到复杂的功能测试,可以对fixture配置参数,或者跨函数function,类class,模块module或整个测试session范围。

4.用法:

@pytest.fixture()
def begin():print('123')  # 前置代码,在用例之前自动执行yieldprint('456')  # 后置代码,在用例执行之后自动执行

调用

import pytest@pytest.mark.api
@pytest.mark.ui
def test01(begin):  # 函数(写在类外边是函数)/使用fixtureassert 1 == 1  # 测试通过class Test:@pytest.mark.e2e@pytest.mark.apidef test01(self,begin):  # /使用fixture# 方法(写在类里边带有self传递的是方法)assert 1 == 2  # 测试失败

5.fixture的作用范围:

①支持5级范围

②同一个范围内的用例,共享fixture

③conftest.py创建全局范围fixture

三.hook

概念:Hook函数又称为钩子函数:当pytest在合适的时机,允许进入或退出pytest核心内部

目的:改变pytest原有的处理方式,运行模式;通过这些钩子我们可以对pytest 用例收集、用例执行、报告输出等各个阶段进行干预。

钩子函数参考:pytest合集(9)— Hook钩子函数_pytest钩子函数-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Android 深层链接利用

为了能够从我们的应用程序打开另一个应用程序,我们通常通过声明我们想要访问的 Activity 类的名称来实现这一功能。但是,如果我们要打开的 Activity 在其清单文件中设置了android:exported"false" ,则无法使用此方法。而其中一种替…

Open3D(C++) 基于点云的曲率提取特征点(自定义阈值法)

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接,首发于:2024年9月23日。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的抄袭狗。 一、算法原理 点云的曲率反映了点云表面的凹凸程度,根据点云曲率的分布情况,设置合适的阈值,提取…

安畅检测受邀参与“长清区数字化转型企业对接会”

9月11日下午,长清区工信局召开“长清区数字化转型企业对接会”,链接数字化服务商与亟待数字化升级的企业代表,共商推进数字化诊断等事项,安畅检测数字化诊断项目负责人受邀出席本次会议。 会上,长清区工信局相关负责人…

性能测试问题诊断-接口耗时高

问题现象&#xff1a;近期发现每晚跑的定时压测任务&#xff0c;压测结果中&#xff0c;各接口耗时变高&#xff08;原来99耗时<3秒&#xff0c;当前99耗时>20秒)。 问题排查&#xff1a; 查看jmeter 生成的结果图&#xff0c;发现压测2分钟后出现接口耗时变高情况。如下…

安装一个本地大模型

详细的教程基于 AnythingLLM 及 Ollama 构建本地知识库 - knqiufan - 博客园 安装本地大模型之后&#xff0c;用如下方式启动 ollama run deepseek-v2:16b。

海豚调度运行成功但无法生成实例解决

海豚调度运行成功但无法生成实例解决 问题描述 点击运行&#xff0c;提示运行成功但无法在工作实例中看到 问题定位 查看资源监控&#xff0c;内存占用80% 查看master日志 tail -f /home/dolphinscheduler/tmp/dolphinscheduler/master-server/logs/dolphinscheduler-m…

Webpack 介绍

Webpack 介绍 Date: August 29, 2024 全文概要 Webpack概念&#xff1a; Webpack是一个静态的模块化的打包工具&#xff0c;可以为现代的 JavaSript 应用程序进行打包。 1-静态&#xff1a;Webpack可以将代码打包成最终的静态资源 2-模块化&#xff1a;webpack支持各种模块…

【Python报错已解决】AttributeError: ‘Tensor‘ object has no attribute ‘kernel_size‘

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

【JS】forEach中push为何不会陷入死循环,稀疏数组空元素为何不会被遍历

前言 使用 forEach 时&#xff0c;遇到过如下几个问题 为什么稀疏数组空元素不会被遍历 为什么每次循环时 push 不会陷入死循环 为什么使用splice删除元素后&#xff0c;访问不到下一位元素 溯源 查阅 ecma官方文档&#xff0c;使用ECMA-262, 14th edition, June 2023版 …

【深度估计】【深度学习】Windows11下Dynamic-multiframe-depth代码Pytorch官方实现与源码讲解

【深度估计】【深度学习】Windows11下Dynamic-multiframe-depth代码Pytorch官方实现与源码讲解 提示:最近开始在【光流估计】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【深度估计】【深度学习】Windows11下Dynamic-multiframe-depth代码Pyt…

JDBC PreparedStatement解决SQL注入方案

文章目录 获取PreparedStatement对象PreparedStatement是如何解决SQL注入问题的PreparedStatement的 应用上述如何解决sql注入的问题呢&#xff1f; 获取PreparedStatement对象 PreparedStatement是Statement的子接口&#xff0c;可以防止sql注入问题。可以通过Connection接口…

耳夹式耳机哪个品牌好?热门品牌机型推荐

在移动互联网时代&#xff0c;耳机已然成为很多人生活里不可或缺的电子产品。不管是在上下班的途中&#xff0c;还是进行运动的时候&#xff0c;耳机都能为人们带来音乐的美妙享受&#xff0c;起到减轻压力的作用。 可是&#xff0c;长时间佩戴入耳式耳机存在一些弊端&#xf…

【无人机设计与控制】使用凸优化的无人机在存在威胁区域时的路径规划

摘要 本文提出了一种基于凸优化的无人机路径规划方法&#xff0c;旨在解决无人机在威胁区域中飞行的最优路径问题。该方法通过构建威胁区域的凸集表示&#xff0c;并结合凸优化算法&#xff0c;确保无人机能够在避开威胁区域的同时&#xff0c;沿着最优路径到达目标点。仿真结…

Ubuntu的源管理详解

Ubuntu的源管理详解 Ubuntu软件源是存储Ubuntu软件包的服务器&#xff0c;通过这些源&#xff0c;用户可以下载、安装或更新软件包。这篇文章将详细介绍Ubuntu如何查看、添加、修改和删除源&#xff0c;以及如何解决源相关的问题。 什么是软件源&#xff1f; Ubuntu软件源是…

无人机之编程基础原理

无人机编程基础原理涉及多个方面&#xff0c;主要包括无人机的基本原理、飞行控制算法、编程语言及算法应用等。以下是对这些方面的详细阐述&#xff1a; 一、无人机基本原理 无人机的基本原理是理解其结构、飞行原理、传感器和控制系统等的基础。无人机通常由机身、动力系统&…

中国山东著名国学大师起名专家颜廷利:人类的终极使命,超越地球的探索之旅

中国山东著名国学大师起名专家颜廷利&#xff1a;人类的终极使命,超越地球的探索之旅 人类的存在&#xff0c;不是为了留恋地球&#xff0c;而是为了离开地球…&#xff08;升命学说&#xff09; 安徽阜阳、海口、滁州、宜春、河南周口、新乡、茂名、宁夏.银川最好的专业取名…

【CSS in Depth 2 精译_032】5.4 Grid 网格布局的显式网格与隐式网格(上)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…

【PGCCC】 复合索引和部分索引,竟然能让查询速度提升 275 倍!

索引对于加速数据库查询和提高 PostgreSQL 应用程序的性能至关重要。但是&#xff0c;并非所有索引都以相同的方式发挥作用。复合索引和部分索引是两种常见类型&#xff0c;每种类型都有不同的用途和对性能的影响。本文我们将深入探讨复合索引和部分索引是什么、它们如何运作以…

BUG——IMX6ULL编译正点原子Linux内核报错

最初编译的是正点原子改过的Linux内核&#xff0c;可能是版本问题&#xff0c;一直报错&#xff0c;无法成功编译。然后换成NXP官方Linux内核6.6版本&#xff0c;初始编译虽然也报各种错&#xff0c;但都是缺少库或相关工具&#xff0c;全部安装后就可以成功编译出镜像了&#…

运营商二要素接口如何用PHP实现调用

一、什么是手机二要素&#xff1f; 运营商二要素又称手机二要素&#xff0c;运营商二要素核验&#xff0c;手机二要素核验&#xff0c;即传入姓名、手机号码&#xff0c;校验此两项是否一致。实时核验&#xff0c;返回校验结果&#xff01; 二、手机二要素适用哪些场景&#…