2012-03-25 3 views
6

Существует ли конкретная структура каталогов, используемая для TDD в Python?Структура каталога Python TDD

Учебники говорить о содержании тестов, но не там, где поместить их

С ковыряться Python Коаны, подозреваю его что-то вроде:

/project/main_program.py   # This has main method, starts program 
/project/classes/<many classes>.py 
/project/main_test.py   # This simply directs unittest onto tests, can use parameters fed to it to customise tests for environment 
/project/tests/<many tests>.py 

# to run tests, type "python -m unittest main_test.py" (into a terminal) 
# to run program, type "python main_program.py" 

Могу ли я делать это правильно ? Есть ли хорошее руководство, которое учит иерархии каталогов для TDD? Я слышал, что смешанные файлы кода и тесты плохие.

Ссылки:

+0

Для новичков: Если у вас есть структура, показанная выше, то для проверки /project/classes/codey.py с /project/tests/testy.py у вас будет «импортировать код из классов», написанный на testy.py что он знает, где искать. При импорте python выполняет поиск. Поэтому, если у вас есть /cat/sat/on/sometest.py и /cat/trolled/dog/somecode.py, тогда «import somecode from cat.trolled.dog» войдет в тест. – xxjjnn

ответ

4

Основываясь на вашем Proje кт, Какой бы стиль позволяет вам

  • Seperate код реализации от тестирования кода
  • Создание новых тестов легко
  • Выполнить все тесты в одной операции (например, для регрессионного тестирования)

Python koans/etc - это только рекомендации. В конце концов, вы хотите поддерживать DRY с помощью ваших unittests и быть в состоянии легко, интуитивно и интуитивно проверять. В конечном итоге вам решать вашу структуру папок.

Я чувствую, что вы слишком много фокусируетесь на удовлетворении соглашения, а не на удовлетворении своего проекта.

+1

Это круто, это неважно =) Думайте за пределами ... эй, что вы сделали с коробкой Python? – xxjjnn

+0

Это по-прежнему актуальный вопрос, и его задают на каждом форуме для языков программирования. Ссылка http://stackoverflow.com/questions/193161/what-is-the-best-project-structure-for-a-python-application для большего количества заметок. –

1

Существует два основных варианта: в каталоге верхнего уровня «тест» (или «тесты») или в «тестовых» каталогах в вашем пакете на каждом уровне. Преимущество первого заключается в том, что легко проводить как единичные тесты, так и другие тесты. Последнее имеет преимущество, заключающееся в том, что вы легко запускаете свои тесты против установленной версии кода и рекомендуется this blog post, в котором описывается базовая структура, которая хорошо работает для проектов Python.

В конце дня важно, чтобы их легко находить и запускать.