Я раз у раз перевіряю тему тестового розміщення, і щоразу більшість рекомендує окрему структуру папок поруч із кодом бібліотеки, але я вважаю, що аргументи кожного разу однакові і не такі переконливі. В кінцевому підсумку я розміщую свої тестові модулі десь біля основних модулів.
Основна причина цього: рефакторинг .
Коли я пересуваю речі, я хочу, щоб тестові модулі рухалися разом із кодом; втратити тести легко, якщо вони знаходяться в окремому дереві. Будемо чесними, рано чи пізно ви закінчите зовсім іншу структуру папок, наприклад, джанго , фляшку та багато інших. Що добре, якщо вам все одно.
Головне питання, яке ви повинні задати собі, це:
Я пишу:
- а) бібліотеку для багаторазового використання або
- б) побудова проекту, ніж зв'язує разом деякі напіввідділені модулі?
Якщо:
Окрема папка та додаткові зусилля для підтримання її структури можуть бути більш підходящими. Ніхто не скаржиться на те, що ваші тести будуть розгорнуті у виробництво .
Але також так само просто виключити тести з розповсюдження, коли вони змішуються з основними папками; помістіть це в setup.py :
find_packages("src", exclude=["*.tests", "*.tests.*", "tests.*", "tests"])
Якщо b:
Ви можете побажати - як і кожен з нас - писати бібліотеки для багаторазового використання, але більшу частину часу їхнє життя пов'язане з життям проекту. Можливість легко підтримувати свій проект повинна бути пріоритетом.
Тоді, якщо ви добре зробили свою роботу, і ваш модуль добре підходить для іншого проекту, він, ймовірно, буде скопійований - не розщеплений або зроблений в окрему бібліотеку - в цей новий проект, і переміщення тестів, які лежать поруч з ним, в тій же структурі папок Легко порівняно з виловленням тестів у безладі, який став окремою тестовою папкою. (Ви можете стверджувати, що в першу чергу це не повинно бути безладом, але будьмо реалістичні тут).
Отже, вибір все одно за вами, але я б заперечував, що за допомогою змішаних тестів ви досягаєте всіх тих самих речей, що і в окремій папці, але з меншими зусиллями на те, щоб утримати речі в порядку.