如何使用pytest fixtures创建测试所需文件夹?
pytest fixture 重构方案
核心优化点
- 用fixture的作用域控制文件夹创建时机,避免重复执行冗余检查
- 替换原有的单层目录创建逻辑为递归创建,兼容上层目录不存在的场景
- 支持自动执行或按需调用两种模式,适配不同测试场景
重构后代码
import os import pytest # scope可按需调整:session(全局测试会话仅执行1次)/ module(单测试文件执行1次)/ function(每个测试用例执行1次) # autouse=True表示全局自动生效,无需手动在测试用例中引用 @pytest.fixture(scope="session", autouse=True) def ensure_test_output_dir(): output_path = "data/output" # exist_ok=True 自动跳过已存在目录,自动递归创建所有缺失的父目录 os.makedirs(output_path, exist_ok=True) # 返回路径可供测试用例直接调用 return output_path
用法说明
- 如果设置了
autouse=True,无需额外修改原有测试代码,运行测试时会自动完成目录创建检查,完全替代你原来的手动创建逻辑 - 如果不需要全局生效,去掉
autouse=True参数,仅在需要用到输出目录的测试用例中传入fixture即可:
def test_sample_case(ensure_test_output_dir): result_path = os.path.join(ensure_test_output_dir, "test_result.json") # 后续测试逻辑
内容的提问来源于stack exchange,提问作者viktor_dmitry
相关产品推荐
相关产品推荐

