如何在Python 3.11的pytest中给tmpdir_factory添加无数字后缀的trial子目录?
解决pytest中创建固定名称临时子目录的问题
tmpdir_factory.mktemp() 方法的设计初衷是生成唯一不重复的临时目录,自动追加数字是为了避免同名目录冲突。如果你想要创建固定名称的trial子目录,不需要用mktemp,直接操作基础临时目录的路径即可:
具体实现步骤
- 调用
tmpdir_factory.getbasetemp()获取pytest管理的基础临时目录路径 - 拼接
trial子目录路径,调用mkdir()方法创建目录(推荐加上exist_ok=True,防止重复创建时抛出异常)
代码示例
在测试函数中使用:
def test_fixed_trial_dir(tmpdir_factory): # 获取基础临时目录 base_temp = tmpdir_factory.getbasetemp() # 拼接目标子目录路径 trial_dir = base_temp / "trial" # 创建目录,exist_ok=True允许目录已存在的情况 trial_dir.mkdir(exist_ok=True) # 验证路径:此时trial_dir的路径即为 <临时目录根路径>/trial assert trial_dir.basename == "trial"
在session级fixture中复用:
import pytest @pytest.fixture(scope="session") def fixed_trial_dir(tmpdir_factory): base_temp = tmpdir_factory.getbasetemp() trial_dir = base_temp / "trial" trial_dir.mkdir(exist_ok=True) return trial_dir
注意事项
- 这个目录会和pytest管理的其他临时文件一起在测试结束后自动清理,无需手动删除
exist_ok=True参数在Python 3.5+支持,刚好符合你使用的Python 3.11环境,能避免多个测试用例或重复运行时因目录已存在报错
内容的提问来源于stack exchange,提问作者Obromios
相关产品推荐
相关产品推荐

