Я помещаю свои тесты в ту же директорию, что и тестируемый код (CUT); для foo.py
тесты будут в foo_ut.py
или аналогичном. (Я настраиваю тестовый процесс обнаружения, чтобы найти их.)
Это помещает тесты прямо рядом с кодом в список каталогов, делая очевидным наличие тестов, и делает открытие тестов настолько простым, насколько это возможно, когда они находятся в отдельном файле. (Для редакторов командной строки vim foo*
и при использовании браузера с графической файловой системой просто щелкните файл CUT, а затем непосредственно прилегающий тестовый файл.)
Как отметили другие , это также облегчает рефакторинг и извлечение кода для использования в другом месте, если это когда-либо понадобится.
Мне очень не нравится идея помещать тесты в совершенно другое дерево каталогов; зачем усложнять разработчикам открытие тестов при открытии файла с помощью CUT? Не то, чтобы подавляющее большинство разработчиков так увлекались написанием или настройкой тестов, что игнорировали бы любой барьер для этого, вместо того, чтобы использовать этот барьер в качестве оправдания. (Наоборот, по моему опыту; даже когда вы делаете это как можно проще, я знаю многих разработчиков, которые не могут быть обеспокоены написанием тестов.)