超超哥AI云计算超哥讲AI 出品

社群入口

AI 超哥 Codex 副业群

扫码加入群聊,一起交流 AI、Codex 与副业实践。

原图注明二维码于10月20日前有效;若提示过期或无法入群,请等待更新二维码。

AI 超哥 Codex 副业群入群二维码在新窗口打开原图

Fixture、测试数据与资源隔离

接口测试、单元测试与自动化测试#Python全栈#第十七阶段#接口测试、单元测试与自动化测试#Fixture、测试数据与资源隔离约 878 字 · 3 分钟阅读
追问显示
点击任意追问卡片可收起 / 展开

pytest fixture 怎样提供可复用的测试准备?

追问 为什么测试函数可以通过参数请求 fixture?登录用户、数据库会话和应用实例分别应怎样拆分依赖?

function、module、session 等 fixture scope 怎样选择?

追问 哪些资源适合共享初始化,哪些业务状态需要每个测试重置?扩大作用域后怎样识别运行顺序依赖?

怎样通过 yield fixture 管理资源清理?

追问 测试断言失败后清理是否仍应执行?准备阶段尚未到达 yield 就抛错时,该 fixture 的后续清理代码会怎样,如何避免资源遗漏?

conftest.py 与 autouse fixture 应怎样使用?

追问 局部目录 fixture 与全局 fixture 如何划分?为什么大量隐藏准备逻辑会使测试难以理解,怎样控制自动生效范围?

Fixture 之间的执行顺序应怎样表达?

追问 能否依赖函数定义顺序或参数书写顺序实现业务先后?怎样用明确依赖保证数据库准备完成后才创建用户和客户端?

怎样用工厂 fixture 创建不同角色和状态的数据?

追问 普通用户、老师、管理员和禁用用户如何生成?默认值、唯一字段和关联对象怎样设计,避免每个测试复制大量准备代码?

测试文件上传、导出和报告生成时,怎样隔离文件资源?

追问 tmp_path 怎样帮助创建独立目录?文件内容、编码、权限范围和清理结果怎样验证,不能只检查路径存在的原因是什么?

如何控制测试中的环境变量、当前时间和随机性?

追问 配置何时读取,补丁为何要在正确时机生效?时区、令牌过期和随机种子怎样固定,随机数据仍需怎样保留复现信息?

测试数据怎样避免依赖固定主键、现有用户和执行顺序?

追问 怎样由创建结果获取标识?排序规则怎样明确,单独运行与全量运行结果不同时如何定位共享状态?

并行执行测试时,数据库、Redis、队列与端口怎样隔离?

追问 每个 Worker 的命名空间与测试运行标识怎样组合?为什么 session fixture 通常不能被视作跨所有进程只执行一次,资源清理怎样限定范围?

隔离核对资料: pytest:Fixtures、pytest:Monkeypatch。