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

pytest 常用的辅助函数和工具函数

pytest 常用的辅助函数和工具函数示例

# @File: my_module.pydef fetch_data():return 'process data'def process_data():data = fetch_data()return data.upper()
import logging
import sys
import pytest#01-------------------------------@pytest.fixture,sample_data 在测试函数中被调用,以提供必要的测试准备工作或资源
@pytest.fixture
def sample_data():arr = [1,2,3]return arrdef test_data(sample_data):res = sample_data[0]assert res == 1#02-------------------------------pytest.raises 测试代码是否引发了预期的异常
def test_raise_divide():with pytest.raises(ZeroDivisionError):1 / 0#03-------------------------------@pytest.mark.xfail 用于标记预期会失败的测试,测试失败不会影响整体测试结果
@pytest.mark.xfail
def test_expect_fail():assert 1 == 2
''' 
#04-------------------------------import pdb; pdb.set_trace() 用于在测试中插入断点,方便调试
def test_debug():## import pdb; pdb.set_trace()assert 1 == 1
'''#05-------------------------------@pytest.mark.usefixtures("setup_1", "setup_2")  在测试函数中应用多个夹具
@pytest.fixture
def setup_1():print('fixture 1')@pytest.fixture
def setup_2():print('fixture 2')@pytest.mark.usefixtures("setup_1", "setup_2")
def test_with_mul_fixtures():assert 1== 1#06-------------------------------@pytest.mark.timeout  设置测试的超时时间,避免测试运行过长时间
@pytest.mark.timeout(1)
def test_long_running():import timetime.sleep(2)#07-------------------------------@pytest.mark.filterwarnings  用于过滤警告信息,控制哪些警告被显示或忽略
@pytest.mark.filterwarnings("ignore::UserWarning")
def test_ignore_warning():import warningswarnings.warn("This is a warning", UserWarning)#08------------------------------ pytest.config  用于获取或修改 pytest 配置,虽然在较新版本中通常使用 pytest 插件系统替代
def test_config():config = pytest.configassert config.option.verbose#09------------------------------@pytest.mark.order()控制测试的执行顺序(需要 pytest-order 插件)
@pytest.mark.order(1)
def test_first():assert 1==1@pytest.mark.order(2)
def test_second():assert 1==1#10------------------------------pytest.capture 的 caplog 用于捕获日志输出并进行断言
def test_logging(caplog):logger = logging.getLogger('test_logger')logger.warning('this is a warning')assert 'this is a warning' in caplog.text#11------------------------------pytest.fixture 的 autouse,  自动使用夹具,而无需在测试函数中显式声明
@pytest.fixture(autouse=True)
def auto_fixture():print('this runs before each test')def test_example():assert True#12------------------------------pytest.mark.skipif 在特定条件下跳过测试
@pytest.mark.skipif(sys.platform=='win64', reason='Requires Unix-like OS')
def test_unix_only_feature():assert True#13------------------------------pytest 的 monkeypatch 用于在测试运行时动态地修改或模拟对象、方法、类等。这可以帮助你隔离测试环境、模拟依赖项,或者控制外部依赖的行为from TestCases.ModelG.my_module import process_datadef mock_fetch_data():return 'mock data'def test_process_data(monkeypatch):# 使用 monkeypatch 来模拟 fetch_data 函数monkeypatch.setattr("TestCases.ModelG.my_module.fetch_data",mock_fetch_data)res = process_data()assert res == 'MOCK DATA'

 

test_data.py::test_data 
test_data.py::test_raise_divide 
test_data.py::test_expect_fail 
test_data.py::test_with_mul_fixtures 
test_data.py::test_long_running 
test_data.py::test_ignore_warning 
test_data.py::test_config 
======= Global initialization =======
this runs before each test
PASSED                                           [  7%]this runs before each test
PASSED                                   [ 15%]this runs before each test
XFAIL                                     [ 23%]
@pytest.mark.xfail
    def test_expect_fail():
>       assert 1 == 2
E       assert 1 == 2

test_data.py:35: AssertionError
this runs before each test
fixture 1
fixture 2
PASSED                              [ 30%]this runs before each test
PASSED                                   [ 38%]this runs before each test
PASSED                                 [ 46%]this runs before each test
FAILED                                         [ 53%]
TestCases\ModelG\test_data.py:69 (test_config)
def test_config():
>       config = pytest.config
E       AttributeError: module 'pytest' has no attribute 'config'

test_data.py:71: AttributeError
this runs before each test
PASSED                                          [ 61%]this runs before each test
PASSED                                         [ 69%]this runs before each test
PASSED                                        [ 76%]this runs before each test
PASSED                                        [ 84%]this runs before each test
PASSED                              [ 92%]this runs before each test
PASSED                                   [100%]

相关文章:

pytest 常用的辅助函数和工具函数

pytest 常用的辅助函数和工具函数示例 # File: my_module.pydef fetch_data():return process datadef process_data():data fetch_data()return data.upper() import logging import sys import pytest#01-------------------------------pytest.fixture,sample_data 在测试…...

记录Java秋招面经(网上找的)

1.Mysql的存储机制,怎么落到库里面的? 当数据插入 MySQL 时,首先数据修改会在内存中的 Buffer Pool 中完成,同时记录写入 Redo Log 以保证事务的持久性。事务提交时,日志会被刷入磁盘,确保数据可以恢复。修…...

记录k8s重启之后kubelet无法启动的问题

重启机器后,kubelet没有自启动,手动启动失败,检查日志反馈找不到bootstrap-kubelet.conf这个文件。 systemctl start kubelet journalctl -u kubelet 57481 run.go:74] "command failed" err"failed to run Kubelet: unable …...

IA——网络操作设备VRP简介

一,VRP简介 二,网络设备的管理 (1)console口: (2)talnet: (3)SSH: 安全的远程登陆 (4)通过WEB页面登录: 三,命令行常见…...

Java项目: 基于SpringBoot+mysql企业客户管理系统(含源码+数据库+答辩PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmysql企业客户管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功…...

基于STM32设计的智能安防系统(微信小程序)(218)

文章目录 一、前言1.1 项目介绍【1】开发背景【2】项目实现的功能【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】整体构架【3】微信小程序开发思路1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要【5】项目背景1.4 开发工具的选择【1】设备端…...

tomcat redis minio nginx windows开机自启

tomcat 开机自启 命令 service.bat install 控制台输入 service.bat install 再到服务中去查看有没有注册成功,minio,redis,nginx 也是一样在服务里查看注册成功没 redis 开机自启 命令 redis-server.exe --service-install redis.windows.conf --loglevel ve…...

Docker构建镜像教程

目录 1. Docker 环境准备2. 编写 Dockerfile3. 构建 Docker 镜像4. 运行容器5. 管理镜像和容器6. 镜像的导出和导入6.1 导出 Docker 镜像6.2 导入 Docker 镜像6.3 导出与导入的实际场景6.4 压缩导出的镜像 7. 推送镜像到 Docker Hub8. Dockerfile 指令详解1. FROM2. RUN3. WORK…...

扑捉一只耿鬼(HTML文件)

图例&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>耿鬼</title><style>body {background: #fff;font-family: Comfortaa, sans-serif;}* {box-sizing:…...

Address localhost:1099 is already in use:tomcat频繁重启端口占用问题

错误提示 Unable to open debugger port (127.0.0.1:58198): java.net.SocketException "Socket closed" Address localhost:1099 is already in use 端口被占用 报错原因 由于短时间内频繁运行tomcat服务器。 为了避免出现这一错误。可以点击刷新uodate resourc…...

HTTPS SEO优势

搜索引擎优化&#xff08;SEO&#xff09;是提高网站在搜索引擎结果页&#xff08;SERP&#xff09;中的排名以吸引更多访问者的过程。HTTPS作为网站安全的标准&#xff0c;对SEO有着直接和间接的优势&#xff1a; 1. HTTPS作为排名信号 2014年&#xff0c;Google宣布HTTPS成…...

UE5 C++ 读取图片插件(一)

原来UE可以使用 static,之前不知道&#xff0c;一用就报错。 static TSharedPtr<IImageWrapper> GetImageWrapperByExtention(const FString InImagePath); //智能指针&#xff0c;方便追寻引用C,加载ImageWrapperstatic UTexture2D* LoadTexture2D(const FString& …...

C语言行地址列地址区别,内存的分配

开辟了10个字节的空间在栈中 "abc"常量在代码段 char a[10]"abc"; p&#xff1a;8个字节存"abc"的地址 "abc"常量在代码段中 char *p"abc" char *q"abc" p,q的值是一样的 到…...

Unity 一键修改图片缩放保存为当前的一半大小

用来压缩贴图大小还是比较方便的 支持 png,jpg,tga 话不多说 直接上代码 [MenuItem("Assets/扩展功能/缩放贴图一半尺寸&#xff08;png | jpg | tga&#xff09;", false)]static void ScaleHalfTextureSizeMenu(){foreach(var obj in Selection.objects) {Texture…...

Identifying User Goals from UI Trajectories论文学习

通过UI轨迹识别用户的需求。 这篇论文同样聚焦于UI agent&#xff0c;只是思路比较特别。他们想要通过训练agent通过用户的行为轨迹反推出他们想要干什么的能力来锻炼agent识别&#xff0c;理解&#xff0c;使用UI的能力。同时这个训练项目本身也有一定的实际意义&#xff0c;…...

[STM32]从零开始的STM32标准库环境搭建(小白向)

一、我们为什么要搭建STM32标准库开发环境 如果你对STM32有一定的了解&#xff0c;相信你已经认识了STM32的几种开发方式。基于STM32寄存器开发&#xff0c;基于ST官方的标准库开发&#xff0c;基于ST官方的HAL库开发。我们现在来了解一下这些库的优缺点。首先就是基于寄存器开…...

解决 Android 上的 .NET MAUI/Xamarin.AndroidX 应用调用 ASP.NET Core API 端点时 SSL 连接被拒绝的问题

从虚拟机调用本地API报各种 SSL 连接不上的错误&#xff0c;这给本地调试造成了极大的不便&#xff0c;在被这个问题困扰了多日以后&#xff0c;终于在GitHub上找到答案 基于这个 帖子 &#xff0c;有一个回复 他写了一个帮助类&#xff0c;专门用来调试本地的API&#xff0c;…...

助贷CRM系统:为金融中介行业打造全新营销管理模式

助贷CRM&#xff08;客户关系管理&#xff09;系统是针对金融中介行业&#xff0c;特别是从事贷款助贷业务的机构设计的一套综合管理系统。该系统旨在通过数字化、智能化的手段&#xff0c;优化金融中介机构的营销、销售、客户管理及服务流程&#xff0c;提升运营效率&#xff…...

HBase 部署及shell操作

HBase 数据库 一、HBase 概述1.1 HBase 是什么HBase 的特点 二、HBase 模型及架构2.1 HBase 逻辑模型2.2 HBase 数据模型2.3 HBase 物理模型2.3.1 列簇物理模型2.3.2 Rowkey 字段排序2.3.3 Region 存储到不同节点2.3.4 Region 结构 2.4 HBase 基本架构 三、搭建 HBase 分布式集…...

使用Fign进行客户端远程调用和SpringFormEncoder的使用

1、引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> 2、启动类加上注解 EnableFeignClients SpringBootApplication public class FeignTe…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...