Я тестирую функцию, основное назначение которой - разместить файл в папке, полученной в параметрах этой функции.Для этого я создаю пустой файл в своей корневой папке и проверяю некоторые параметры для пути.Чтобы быть более точным, вот пример:
alocate_file('folder1','folder2','folder3', 'file.txt')
Эта строка приведет к этому расположению:
root / Downloads / folder1 / folder2 / folder3 / file.txt
Некоторые дополнительные характеристики моей функции: папка «Загрузки» неявная, она получает список в качестве параметра и предполагает, что последней строкой в списке является файл.
Моя проблема
После того, как япротестировав эту функцию, я удаляю пустой файл (созданный только для целей тестирования) и все папки, которые создает моя функция.Это делается с помощью shutil.rmtree после подтверждения, и здесь кроется проблема. Когда тест не пройден, вызывает AssertionError , и эти папки и файлы не удаляются, поскольку код после подтверждения не выполняется.Это также саботирует другие тесты, потому что я использую одинаковые имена файлов и папок для всех них.Затем я должен вручную удалить все эти файлы, чтобы иметь возможность снова провести правильное тестирование.
Я думал об использовании осветителей, но не думаю, что это хорошее решение, потому что, как я уже сказал, он тестирует разные путисоздание, это действительно общий случай.Я должен был бы создать отдельные приборы для каждого теста, и этот тест кажется лучшим подходом к этому.
Вот один из моих тестов, которые имеют эту проблему:
def test_alocate_file_three_level_path(root_path):
# creates files in root
file_path1 = os.path.join(root_path, 'test1.pdf')
Path(file_path1).touch()
# creates path for test
test_path = os.path.join(root_path, 'Downloads', 'path1', 'path2','path3','test1.pdf')
# function alocate the file to folders
func_aux.alocate_file('path1', 'path2', 'path3', 'test1.pdf')
# check if the file is there
assert os.path.isfile(test_path) == True
# remove the created file and folders
remove_path = os.path.join(root_path, 'Downloads', 'path1')
shutil.rmtree(remove_path)
Iхочу знать, могу ли я гарантировать единственный способ, что все мои папки и файлы, созданные для целей тестирования, удаляются с помощью специальных приспособлений для каждого теста или есть способ, которым я всегда могу выполнить код после подтверждения даже с ошибкой AssertionError