Время от времени я проверяю тему размещения тестов, и каждый раз большинство рекомендует отдельную структуру папок рядом с кодом библиотеки, но я нахожу, что каждый раз аргументы совпадают и не настолько убедительны. Я заканчиваю тем, что помещаю свои тестовые модули где-то рядом с основными модулями.
Основная причина для этого: рефакторинг .
Когда я перемещаю вещи, я хочу, чтобы тестовые модули перемещались вместе с кодом; легко потерять тесты, если они находятся в отдельном дереве. Давайте будем честными, рано или поздно вы получите совершенно другую структуру папок, такую как django , flask и многие другие. Что хорошо, если тебе все равно.
Главный вопрос, который вы должны задать себе:
Я пишу:
- а) многоразовая библиотека или
- б) создание проекта, чем связывает воедино несколько разделенных модулей?
Если:
Отдельная папка и дополнительные усилия по поддержанию ее структуры могут быть более подходящими. Никто не будет жаловаться на то, что ваши тесты будут внедрены в производство .
Но также легко исключить распространение тестов, когда они смешаны с основными папками; поместите это в setup.py :
find_packages("src", exclude=["*.tests", "*.tests.*", "tests.*", "tests"])
Если б:
Вы можете пожелать - как и каждый из нас - что вы пишете многократно используемые библиотеки, но большую часть времени их жизнь связана с жизнью проекта. Возможность легко поддерживать ваш проект должна быть приоритетом.
Тогда, если вы хорошо поработали, и ваш модуль хорошо подходит для другого проекта, он, вероятно, будет скопирован - не разветвлен или превращен в отдельную библиотеку - в этот новый проект и перенесет расположенные рядом с ним тесты в ту же структуру папок. это легко по сравнению с тестированием в беспорядке, в которое превратилась отдельная папка. (Вы можете утверждать, что это не должно быть беспорядком, но давайте будем реалистичны здесь).
Так что выбор остается за вами, но я бы сказал, что с помощью смешанных тестов вы достигаете того же, что и с отдельной папкой, но с меньшими усилиями по поддержанию порядка.