Я новичок в тестировании программного обеспечения. Интересно, как написать unit test для связанных с файлом функций в python. например, если у меня есть функция копирования файлов следующим образом.
def copy_file (self):
if not os.path.isdir(dest_path):
os.makedirs(dest_path)
try:
shutil.copy2(src_path, dest_path)
except IOError as e:
print e
Что мне делать с проверкой выше функции? что я должен утверждать (каталог, содержимое файла, исключения)?
Вы можете положиться на shutil.copy2, правильно скопировав содержимое. Вам нужно только проверить свой код. В этом случае он создает каталоги, если они не существуют, и что он проглатывает IOErrors.
И не забудьте очистить.;)
Я думаю, вы можете получить ключ от test_shutil и посмотреть, как он тестирует функции копирования. А именно, это перемещение файлов и тестирование, если они существуют с использованием другого модуля. Разница в поведении стандартного shutil.copy к вашей обертке заключается в том, чтобы иметь дело с пунктом назначения, если он еще не существует. В shutil.copy2, если пункт назначения еще не существует, создается файл, который перемещается из источника, в вашем случае он не является файлом, но создается целевой каталог и вы перемещаете его в него. Поэтому пишите тесты там, где назначения не существует, и убедитесь, что после того, как ваша оболочка запускается, пункт назначения все еще является каталогом и содержит файл, который был перемещен.
Подумайте о требованиях к вашему методу, например:
null
или незаконные символы для каталогов)Это лишь некоторые мысли. Не ставьте никаких возможных требований и не испытывайте слишком много, имейте в виду, что вы хотите сделать с этим методом. Если он является частным или используется только в вашем собственном коде, вы можете уменьшить область действия, но если вы предоставляете публичный API, то вы должны убедиться, что любой ввод имеет определенный результат (который может быть сообщением об ошибке).