TGViewer
开发者工具箱|编程·开发工具·资源 开发者工具箱|编程·开发工具·资源 @devtoolboxhub · 570 subscribers
Post #1300 11
掌握 Pytest Fixture:消除测试重复代码

Fixtures 是 pytest 测试的基石,用来预置 SparkSession、DataFrame 或数据库连接等对象。只需定义一次,即可注入到多个测试中,避免重复构造输入数据。本系列前篇覆盖了测试与 mock 基础,现在重点解决测试重复问题,让测试套件更快、更易维护。

Fixture 通过 @pytest.fixture 装饰器定义,scope 参数控制生命周期:
• function(默认):每个测试函数新建,适合可变 fixture
• class:每个测试类共享一次
• module:每个测试文件共享一次
• session:整个测试运行共享一次,适合 SparkSession 等昂贵资源
用 yield 分离 setup 与 teardown:yield 前是准备,yield 后是清理(即使测试失败也会执行)。autouse=True 让 fixture 自动对所有测试生效,适合清理日志文件、重置环境变量等。conftest.py 是跨测试文件的共享仓库,根目录下定义的 fixture 无需导入即可被所有测试使用。
最佳实践:保持 fixture 靠近使用处,conftest.py 只放通用 fixture;scope 匹配创建成本;使用 yield 管理资源的获取与释放;注意 session 级 Fixture 被修改后会影响后续测试。


通过合理使用 fixture,可以淘汰复制粘贴的设置代码,组合出可复用、范围恰当的测试组件。结合前文的 mock 基础,现在有能力构建整洁、可维护的测试套件。

#开发者 #工具 #Pytest #Python #测试 #Fixture #自动化测试
@DevToolboxHub
More from @devtoolboxhub
  1. Sep 30, 2026AMSI 绕过技术 2026 开发者指南 AMSI(Antivirus Malware Scan Interface)是 Windows 的恶意脚本扫描接口,覆盖 PowerShe…
  2. Sep 30, 2026AI Agent 为什么记不住事 和 AI Agent 协作时最容易注意到的一点是:它们很擅长回答问题,却不擅长记住昨天发生过什么。你可以和它长聊一轮,做出一堆决定、说明偏好、一起…
  3. Sep 30, 2026wpipe:面向 Python 开发者的轻量编排库 wpipe 是一个纯 Python 可嵌入的编排库,目标是让数据管道的开发回到「编辑—运行—调试」的快速循环,而不必为验证业务逻…
  4. Sep 29, 20262,916 个 AI 网站 8 月流量:转录与图生 3D 起飞 Anjin Radar 追踪了 2,916 个 AI 网站的月度访问量,数据截至 2026 年 9 月 28 日。访…
  5. Sep 29, 2026Python 虚拟环境其实是个软链接 在 Linux 和 macOS 上执行 python3 -m venv .venv,并不会复制一份 Python。venv 里的 python…
  6. Sep 29, 2026Will It Focus:相机自动对焦兼容性查询 Agent 这是一个面向摄影器材的自动对焦兼容性查询工具,但它真正的看点在于工程实现:如何让模型引用厂商原文时,保证引用的确实是…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →