PyTest: автоматическое удаление временного каталога, созданного с помощью tmpdir_factory

1

Я пытаюсь создать временный каталог с определенным именем (например, "данные") для всех тестов в модуле с использованием PyTest tmpdir_factory аналогично учебнику:

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

Я использую временный каталог в некоторых тестах в модуле успешно. Однако каталог все еще существует после запуска тестов, и когда я запускаю их снова, я получаю сбой, потому что я не могу создать новый временный каталог с именем "данные".

Как я могу автоматически удалить временные данные "данных" после завершения тестов pytest? Аргумент tmpdir создает временный каталог, который удаляется, но он не имеет имени и имеет только область функций.

Теги:
testing
temporary-files
pytest

1 ответ

1
Лучший ответ

Вы можете выполнить очистку после завершения работы светильника, например:

@pytest.fixture(scope='module')
def project_file(self, tmpdir_factory):
    my_tmpdir = tmpdir_factory.mktemp("data")
    yield my_tmpdir 
    shutil.rmtree(str(my_tmpdir))
  • 0
    Я изменил на yield и добавил shutil.rmtree() , но «временный» каталог все еще существует после окончания тестов. Либо вызов на rmtree никогда не достигается, либо он не работает. Как и в учебнике, я использую project_file в качестве аргумента для одной из моих тестовых функций.
  • 0
    Использование shutil.rmtree('data') вместо shutil.rmtree(my_tmpdir) решило проблему. Как только ответ будет исправлен, я приму его.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню