Это отличный вопрос, но я не уверен, что StackOverflow - это то место, где его можно задать, так как нет четкого ответа. Тем не менее, я пытаюсь дать ему шанс.
Django также следует шаблону проектирования MVC, но наименование немного отличается.
Это часто упоминается как MTV вместо MVC. Но это не конец истории, потому что многие люди считают плохой идеей помещать слишком много бизнес-логики в представления по таким причинам, как тестируемость и возможность повторного использования. Существует два распространенных подхода к этой проблеме:
Лично я работал с обоими, и у меня был лучший опыт с сервисным подходом.
Эквивалентом DAO в Django, вероятно, является Django ORM. Обратите внимание, что это действительно только уровень абстракции для поддерживаемых реляционных баз данных. Если вы хотите использовать другой источник данных, такой как NoSQL DB или REST API, вы должны свернуть свое собственное решение или искать сторонние пакеты.
Java может иметь только один открытый класс на файл, и они должны иметь одинаковые имена. В Python такого ограничения нет, поэтому рекомендуется использовать несколько классов на файл (файлы .py называются модулями). Если модуль / файл становится слишком большим, вы можете превратить его в пакет (каталог с файлом __init__.py
), содержащий несколько модулей (и / или подпакетов).
Различия между приложением и проектом могут сбивать с толку, поэтому я написал целую статью о схеме именования Django . Приложение Django представляет собой пакет Python, но обычно они организованы по доменам. Например. в системе управления библиотекой ваш проект library
может иметь приложение catalogue
для управления запасами и приложение checkout
для управления процессом извлечения книг.
И наконец, если вы специально нацелены на создание REST API, я настоятельно рекомендую вам взглянуть на Django REST Framework .
Я только что получил JUnit, тестирующий работающий частью бездисплейной сборки для нашего приложения RCP.
Я нашел эту статью - Автоматизация Eclipse Модульные тесты PDE с помощью Муравья, невероятно полезного. Это предоставляет код и подход для запущения Вас. Однако много вещей, которые я обнаружил:
uitestapplication
требует другого testApplication
. Используя coretestapplication
не делает. Я нашел, что предоставленный код был хорошей начальной точкой, но имел много выше предположений, неявных в их реализации.
Обнаруживание этих предположений, делая работу было относительно прямым.
Java Result 13
проблема.PDETestListener
измененный для обработки нескольких тестовых классовЯ также считал Автоматизацию сборки и Автоматизацию тестирования для плагинов и функций, но мы не используем PDE-сборку непосредственно.
Вот Инструмент, которым я могу повторно управлять, является ли кто-то межотдохнувшим TDD: Infinitest
Краткое описание извлекло из сайта Infinitest:
Что такое Infinitest?
Infinitest является непрерывным исполнителем тестов, разработанным для упрощения Разработки через тестирование. Infinitest помогает Вам изучить TDD путем обеспечения обратной связи, как Вы работаете, и помогает Вам основной TDD путем сокращения цикла обратной связи от минут до простых секунд.
Каждый раз, когда Вы изменяете класс, Infinitest запускает Ваши тесты для Вас. Это умно о том, какие тесты работать, и только запускает тех, Вам нужно. Если какие-либо ошибки происходят, это сообщает о них ясно и кратко. Это дает Вам мгновенную обратную связь о семантической правильности Вашего кода, как современный IDE дает Вам мгновенную обратную связь о синтаксических ошибках.
Мы используем сценарии сборки PDE (см. этот вопрос), и мы экспортируем файлы типа "build" муравья для наших плагинов модульного теста. Эти сценарии сборки муравья затем вызываются из сценариев сборки PDE (customTargets.xml) с помощью задачи Ant "муравья". К сожалению, это только работает с JUnit3. Там, как предполагается, JUnit4-адаптер для JUnit3, таким образом, можно запустить тесты JUnit4 из исполнителя тестов JUnit3.
Мы, вероятно, переместимся во что-то как Знаток; сценарии сборки PDE действительно не отключаются для того, что мы должны сделать с ними.
Используйте Муравья и CruiseControl - Вы называете модульные тесты в скрипте Ant, а также остальной части Вашей логики сборки и можете выполнить их с каждым повторением сборки - затем, CruiseControl может автоматизировать Ваши вызовы сборки и запустить эти тесты каждый раз.
Глядя на ваше исключение, вы видите, что приложение coretest отсутствует. Целевой объект ant можно найти в plugins / org.eclipse.test_3.1.0 / library.xml: 10
На самом деле это проблема зависимости. Eclipse должен иметь все плагины для сборки.
Для правильной настройки необходимо просмотреть 2 файла.
Продукт
Убедитесь, что файл продукта содержит все необходимые плагины.
После этого добавьте функции org.eclipse.rcp и org.eclipse.test
... плагины выше ...
<features>
<feature id="mock_feature" version="1.0.0"/>
<feature id="mock_feature_test" version="1.0.0"/>
<feature id="org.eclipse.rcp" version="3.2.0.v20060609m-SVDNgVrNoh-MeGG"/>
<feature id="org.eclipse.test" version="3.2.0.v20060220------0842282442"/>
</features>
Вам нужен org.eclipse.test для запуска тестов и org.eclipse.rcp для запуска eclipse для запуска тестов.
Не забудьте установить для useFeatures значение 'true'
<product name="mock" id="com.example.mock" application="com.example.mock.application" useFeatures="true">
feature.xml
Предполагая, что у вас есть функция для тестирования, вы должны добавить 2 дополнительных плагина.
... другие плагины выше ...
<plugin
id="org.apache.ant"
download-size="0"
install-size="0"
version="0.0.0"/>
<plugin
id="org.eclipse.core.runtime.compatibility"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
Этим тестам нужен org.apache.ant для запуска тестов и org.eclipse.core.runtime.compatibility для запуска.
Еще одна проблема
Убедитесь, что в вашем целевом затмении (копия eclipse который вы используете для построения против), есть только 1 копия каждого плагина. Например, если в папке плагинов есть 2 версии плагинов com.ibm.icu, eclipse будет использовать более новую. Поскольку плагин сборки pde настроен на использование определенной версии, eclipse будет жаловаться, что не может найти конкретный плагин, даже если он там есть.
Некоторые мысли
Весь процесс создания eclipse мог бы быть намного лучше. На самом деле я получил этот процесс в основном методом проб и ошибок. Документация устарела и немногочисленна. Сообщения об ошибках не помогают. Это только оставляет чувство беспомощности и разочарования. Позволять'
В качестве альтернативы Ant у меня есть хороший опыт использования совершенно нового Maven + Tycho с Hudson. Tycho обеспечивает полную поддержку разработки Osgi и Eclipse на Maven. В настоящее время он интенсивно разрабатывается, но большинство необходимых мне функций работают. С вашей стороны требуется очень небольшая настройка, поскольку он может анализировать файлы MANIFEST.MF.
Если у вас есть некоторый опыт работы с Maven, начать с ним работать несложно. Hudson немного более проблематичен из-за отсутствия поддержки Maven 3. (разрабатываемая версия Maven 3 используется Tycho)
Ссылки для начала: