pytest tmpdir fixture介绍(tmpdir_factory)(自动在测试开始前创建一个临时目录,并在测试结束后删除该目录)
Fixture 的本质是把“测试环境的搭建和销毁”从测试逻辑中解耦出来。 没有它你的测试要么充满重复代码要么因为资源未清理/状态污染而变得不可靠。它是 pytest 最核心的设计哲学之一。示例代码importpytestpytest.fixturedeftmp_dir(tmpdir):# 使用内置的 tmpdir fixturereturntmpdir.mkdir(test_data)deftest_tmp_dir(tmp_dir):filetmp_dir.join(test.txt)file.write(Hello)assertfile.read()Hello参考文章pytest介绍python测试框架pytest.mark.parametrize、pytest.fixtures文章目录**代码解析**1. **导入 pytest 模块**2. **定义自定义 fixturetmp_dir**3. **测试函数test_tmp_dir****调用流程****如何运行代码****关键概念总结****扩展示例**这段代码使用了pytest的内置tmpdirfixture 来创建临时目录并验证其功能。下面是对代码的逐行解释和调用流程的说明代码解析1.导入 pytest 模块importpytest导入pytest模块这是使用pytest测试框架的基础。2.定义自定义 fixturetmp_dirpytest.fixturedeftmp_dir(tmpdir):# 使用内置的 tmpdir fixturereturntmpdir.mkdir(test_data)作用创建一个临时目录test_data并将其返回给测试函数使用。关键点tmpdir是pytest提供的内置 fixture它会自动在测试开始前创建一个临时目录并在测试结束后删除该目录。tmpdir.mkdir(test_data)在临时目录下创建一个名为test_data的子目录。返回值tmp_dir是一个py.path.local对象表示test_data目录。3.测试函数test_tmp_dirdeftest_tmp_dir(tmp_dir):filetmp_dir.join(test.txt)file.write(Hello)assertfile.read()Hello作用在临时目录test_data中创建一个文件test.txt写入内容并验证内容是否正确。关键点tmp_dir是上一步定义的 fixture它会自动传入当前测试函数。tmp_dir.join(test.txt)在test_data目录下创建一个文件test.txt。file.write(Hello)向文件写入字符串Hello。assert file.read() Hello验证文件内容是否匹配预期值。调用流程运行测试时pytest会自动发现以test_开头的测试函数如test_tmp_dir。执行test_tmp_dir时pytest会先调用tmp_dirfixture。tmp_dirfixture 的执行pytest自动调用内置的tmpdirfixture无需手动调用。tmpdir.mkdir(test_data)创建临时目录test_data。返回test_data目录对象给test_tmp_dir函数。测试函数的执行test_tmp_dir使用tmp_dir参数即test_data目录。创建文件test.txt并写入内容最后验证内容是否正确。测试结束后的清理测试完成后pytest会自动删除临时目录test_data及其所有子目录和文件包括test.txt。如何运行代码保存代码到文件将代码保存为test_tmp.py。运行测试在终端中执行以下命令pytest test_tmp.py-v-v表示输出详细的测试信息。如果测试通过你会看到类似test_tmp.py::test_tmp_dir PASSED的输出。验证临时目录的自动清理测试运行时pytest会生成一个临时目录路径类似/tmp/pytest-of-username/.../test_data。测试结束后该目录及其内容会被自动删除无需手动清理。关键概念总结tmpdirfixture自动创建临时目录测试结束后自动删除。可用于存放测试过程中需要的临时文件。Fixture 的作用将测试的准备工作如创建临时目录与测试逻辑分离提高代码的可读性和可维护性。断言验证使用assert验证文件内容是否符合预期确保测试的正确性。扩展示例如果你需要更复杂的临时文件管理可以结合tmpdir_factory会话级临时目录或tempfile模块。例如importpytestimporttempfilepytest.fixturedefsession_tmp_dir(tmpdir_factory):returntmpdir_factory.mktemp(session_data)deftest_session_tmp_dir(session_tmp_dir):filesession_tmp_dir.join(session_file.txt)file.write(Session Data)assertfile.read()Session Datatmpdir_factory的作用范围是整个测试会话session适合需要跨多个测试共享的临时目录。

相关新闻

SSE技术详解:基于HTTP的服务器单向实时数据推送方案

SSE技术详解:基于HTTP的服务器单向实时数据推送方案

1. 项目概述:为什么SSE在今天依然值得你投入时间?如果你正在构建一个需要实时向客户端推送数据的Web应用,比如一个股票行情看板、一个新闻头条的滚动通知,或者一个后台任务的进度条,你可能会立刻想到WebSocket。确实&a…

2026/10/17 8:00:13 阅读更多 →
OpenWorkflow数据库集成指南:PostgreSQL与SQLite配置最佳实践

OpenWorkflow数据库集成指南:PostgreSQL与SQLite配置最佳实践

OpenWorkflow数据库集成指南:PostgreSQL与SQLite配置最佳实践 【免费下载链接】openworkflow Open-source TypeScript framework for building durable, resumable workflows. Supports Node.js and Bun. 项目地址: https://gitcode.com/gh_mirrors/op/openworkfl…

2026/10/17 22:56:12 阅读更多 →
湖仓一体架构下的混合数据治理与多技术栈协同实践

湖仓一体架构下的混合数据治理与多技术栈协同实践

1. 现代数据平台的混合数据治理挑战在2024年的数据工程实践中,我经常遇到这样的场景:一家电商平台同时需要处理用户点击流日志(JSON格式)、商品图片(二进制数据)和交易记录(结构化表&#xff09…

2026/10/17 8:08:18 阅读更多 →

最新新闻

OpenResearch实战:Claude Code、Codex、OpenCode、Cursor 工作流搭建与故障排查

OpenResearch实战:Claude Code、Codex、OpenCode、Cursor 工作流搭建与故障排查

1. 从"OpenResearch"这个名字说起:它到底想解决什么问题第一次看到"OpenResearch"这个标题,加上后面跟着的一串热词——Claude Code、Codex、OpenCode、Cursor——我大概能猜到这背后想聊的是什么。这不是某个具体的开源项目仓库名&…

2026/10/18 0:02:57 阅读更多 →
编码Agent搬出编辑器:本地优先工作台的逻辑与实操

编码Agent搬出编辑器:本地优先工作台的逻辑与实操

最近搜“编辑器”这个词,排在前面的一大堆都是PDF编辑器、游戏存档编辑器、组策略编辑器,连考试编辑器都挤进来了。但在编码这行里说“编辑器”,大家默认还是 VS Code、Zed、Vim 那一类东西。过去两年,编码Agent基本都长在编辑器里…

2026/10/18 0:02:57 阅读更多 →
大模型上下文成本与注意力优化技术深度解析——为何O(n²)平方复杂度无法被常规优化消除|TaoToken 统一 Key 通道实测

大模型上下文成本与注意力优化技术深度解析——为何O(n²)平方复杂度无法被常规优化消除|TaoToken 统一 Key 通道实测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:01:56 阅读更多 →
金融AI落地指南:从调研报告到技术选型与工程实践

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/18 0:01:56 阅读更多 →
知识管理核弹:用Obsidian构建第二大脑的工程化方案(TaoToken 统一 Key 接入版)

知识管理核弹:用Obsidian构建第二大脑的工程化方案(TaoToken 统一 Key 接入版)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:01:56 阅读更多 →
AstronRPA:企业级RPA与AI Agent融合的自动化底座

AstronRPA:企业级RPA与AI Agent融合的自动化底座

1. 项目概述:这不是又一个“RPA套壳AI”的玩具,而是一套能进产线的自动化底座AstronRPA——科大讯飞开源的企业级 RPA AI Agent 自动化平台。这名字里藏着三重信息:Astron(天体/星辰),暗示其架构具备可伸缩…

2026/10/18 0:00:55 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →