You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python 3.11的pytest中给tmpdir_factory添加无数字后缀的trial子目录?

解决pytest中创建固定名称临时子目录的问题

tmpdir_factory.mktemp() 方法的设计初衷是生成唯一不重复的临时目录,自动追加数字是为了避免同名目录冲突。如果你想要创建固定名称的trial子目录,不需要用mktemp,直接操作基础临时目录的路径即可:

具体实现步骤

  1. 调用tmpdir_factory.getbasetemp()获取pytest管理的基础临时目录路径
  2. 拼接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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:01:53