Я пытаюсь создать временный каталог с определенным именем (например, "данные") для всех тестов в модуле с использованием PyTest tmpdir_factory
аналогично учебнику:
@pytest.fixture(scope='module')
def project_file(self, tmpdir_factory):
return tmpdir_factory.mktemp("data")
Я использую временный каталог в некоторых тестах в модуле успешно. Однако каталог все еще существует после запуска тестов, и когда я запускаю их снова, я получаю сбой, потому что я не могу создать новый временный каталог с именем "данные".
Как я могу автоматически удалить временные данные "данных" после завершения тестов pytest? Аргумент 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_file
в качестве аргумента для одной из моих тестовых функций.shutil.rmtree('data')
вместоshutil.rmtree(my_tmpdir)
решило проблему. Как только ответ будет исправлен, я приму его.