Python PyTest:自动删除使用tmpdir_工厂创建的临时目录

Python PyTest:自动删除使用tmpdir_工厂创建的临时目录,python,testing,pytest,temporary-files,Python,Testing,Pytest,Temporary Files,我正在尝试使用PyTest的tmpdir\u工厂为模块内的所有测试创建一个具有特定名称(例如,“数据”)的临时目录,类似于: 我在模块内的一些测试中成功地使用了临时目录。但是,在运行测试之后,该目录仍然存在,当我再次运行它们时,我会失败,因为我无法创建名为“data”的新临时目录 如何在pytest测试完成后自动删除临时目录“data”?tmpdir参数创建临时目录,该目录已被删除,但没有名称,且仅具有功能范围。完成装置后,您可以进行如下清理: @pytest.fixture(scope='mo

我正在尝试使用PyTest的
tmpdir\u工厂
为模块内的所有测试创建一个具有特定名称(例如,“数据”)的临时目录,类似于:

我在模块内的一些测试中成功地使用了临时目录。但是,在运行测试之后,该目录仍然存在,当我再次运行它们时,我会失败,因为我无法创建名为“data”的新临时目录


如何在pytest测试完成后自动删除临时目录“data”?
tmpdir
参数创建临时目录,该目录已被删除,但没有名称,且仅具有功能范围。

完成装置后,您可以进行如下清理:

@pytest.fixture(scope='module')
def project_file(self, tmpdir_factory):
    my_tmpdir = tmpdir_factory.mktemp("data")
    yield my_tmpdir 
    shutil.rmtree(str(my_tmpdir))

我改为
yield
并添加了
shutil.rmtree()
,但测试完成后“临时”目录仍然存在。
rmtree
调用从未到达或不起作用。在本教程中,我使用
project\u文件
作为我的一个测试函数的参数。使用
shutil.rmtree('data')
而不是
shutil.rmtree(my\u tmpdir)
解决了这个问题。一旦答案调整好,我就接受它。实际上,
str(my_tmpdir)
也不起作用。仅使用参数
“data”
。@CGFoX,如果只将字符串
“data”
传递给rmtree,那么代码中还有其他问题。你是如何使用
项目文件
夹具的?你说得对。我甚至没有正确使用tmpdir(它是在我用户的临时目录中创建的)。相反,我只是创建了一个独立于tempdir_工厂的“数据”目录。。。
@pytest.fixture(scope='module')
def project_file(self, tmpdir_factory):
    my_tmpdir = tmpdir_factory.mktemp("data")
    yield my_tmpdir 
    shutil.rmtree(str(my_tmpdir))