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。