У меня есть класс, который управляет некоторым процессом.
dataset_processor.py
class DatasetProcessor:
def __init__(path, list_element):
self.path = path
self.list_element = list_element
def do_check_dirs_under_paths():
"gets dirs from path and checks if elements are also in list_element"
Но теперь, когда дело доходит до dataset_processor.ut.py
, где я хочу сделать модульные тесты и оставив его независимым, я должен издеваться над директориями (не так ли?).
def test_1(self):
test_1_processor = DatasetProcessor(path='M:/example', list_element=['foo', 'bar'])
test_1_processor.do_check_dirs_under_paths()
self.assertTrue(test_1_processor.everything_is_ok())
Я думал:
- Создание другой функции, например.
def mock(dirs=[])
и используйте специальные фиктивные переменные в функции do_check_dirs_under_paths
и проверьте, если self.mock_dirs
. Он влияет на читабельность, но его легко реализовать. - Построить
test_params={}
аргумент для do_check_dirs_under_paths
, куда я бы поместил внешние данные - это также влияет на читабельность. - Каким-то образом shadow os.listdir, os .isdir и функции на время тестов для манипулирования результатами - я думаю, что это был бы лучший вариант.
- На время тестирования: собственно, создайте эти каталоги. Тем не менее, поскольку этот подход может не сработать позже (для больших файлов и т. Д. c.) - я хотел быть последовательным и уверен, что не попаду в большую ловушку архитектуры позже.
@ edit
Для более широкой перспективы. DatasetProcessor - это больший класс, который управляет другими подпроцессами поддержки набора данных изображений. Он также проверяет читаемость файлов и генерирует массив NumPy из изображений в нужном мне формате.
Представленный фрагмент является одним из тех, которые я хочу получить в модульных тестах.