Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PyTest: Auto delete temporary directory created with tmpdir_factory

I'm trying to create a temporary directory with a specific name (eg, "data") for all tests within a module using PyTest's tmpdir_factory similar to the tutorial:

@pytest.fixture(scope='module')
def project_file(self, tmpdir_factory):
    return tmpdir_factory.mktemp("data")

I'm using the temporary directory in some tests within the module successfully. However, the directory still exists after running the tests and when I run them again, I get a failure because I cannot create a new temporary directory with name "data".

How can I automatically delete the temporary directory "data" after the pytest tests finish? The tmpdir argument creates temporary directory that is removed but it doesn't have a name and it only has function scope.

like image 773
CGFoX Avatar asked Jul 30 '18 12:07

CGFoX


1 Answers

You can cleanup after the fixture is done like:

@pytest.fixture(scope='module')
def project_file(self, tmpdir_factory):
    my_tmpdir = tmpdir_factory.mktemp("data")
    yield my_tmpdir 
    shutil.rmtree(str(my_tmpdir))
like image 141
Stephen Rauch Avatar answered Nov 28 '22 10:11

Stephen Rauch