Реализован класс TempFolderCleaner для очистки временной папки с логированием; добавлены тесты для проверки функциональности; добавлены настройки для тестирования в VSCode и конфигурация для линтинга кода.

This commit is contained in:
kromskii2 committed 2025-01-29 00:08:05 +07:00
1 parent d6b9490432
commit 8caa88cce1
4 files changed
+108 -19

No files matched your search

+52 -5
View File
@@ -1,13 +1,60 @@
import os
import unittest
from src.main import clean_temp_folder
from unittest.mock import patch, MagicMock
from src.main import TempFolderCleaner
class TestCleanTempFolder(unittest.TestCase):
def test_clean_temp_folder(self):
# Здесь можно добавить тесты для проверки работы функции clean_temp_folder
# Например, можно использовать mock для проверки удаления файлов
pass
@patch('src.main.os.environ.get')
@patch('src.main.os.walk')
@patch('src.main.os.remove')
def test_clean_temp_folder(self, mock_remove, mock_walk, mock_get_env):
# Настройка тестовой среды
mock_get_env.return_value = '/mock/temp'
mock_walk.return_value = [
('/mock/temp', ('subdir',), ('file1.txt', 'file2.txt')),
('/mock/temp/subdir', (), ('file3.txt',))
]
cleaner = TempFolderCleaner()
cleaner.clean_temp_folder()
# Проверка, что os.remove был вызван для каждого файла
mock_remove.assert_any_call('/mock/temp/file1.txt')
mock_remove.assert_any_call('/mock/temp/file2.txt')
mock_remove.assert_any_call('/mock/temp/subdir/file3.txt')
self.assertEqual(mock_remove.call_count, 3)
@patch('src.main.os.environ.get')
@patch('src.main.os.walk')
@patch('src.main.os.remove')
def test_clean_temp_folder_with_errors(self, mock_remove, mock_walk, mock_get_env):
# Настройка тестовой среды
mock_get_env.return_value = '/mock/temp'
mock_walk.return_value = [
('/mock/temp', ('subdir',), ('file1.txt', 'file2.txt')),
('/mock/temp/subdir', (), ('file3.txt',))
]
mock_remove.side_effect = [None, Exception("Ошибка удаления"), None]
cleaner = TempFolderCleaner()
cleaner.clean_temp_folder()
# Проверка, что os.remove был вызван для каждого файла и обработка ошибок
mock_remove.assert_any_call('/mock/temp/file1.txt')
mock_remove.assert_any_call('/mock/temp/file2.txt')
mock_remove.assert_any_call('/mock/temp/subdir/file3.txt')
self.assertEqual(mock_remove.call_count, 3)
@patch('src.main.os.environ.get')
def test_temp_folder_not_found(self, mock_get_env):
# Настройка тестовой среды
mock_get_env.return_value = None
cleaner = TempFolderCleaner()
with self.assertLogs(level='WARNING') as log:
cleaner.clean_temp_folder()
self.assertIn('Папка Temp не найдена.', log.output[0])
if __name__ == '__main__':
unittest.main()