У меня есть вопрос о тестировании моих приложений Django в построенном проекте Django.
Во-первых, у меня тот же проект, который еще не построен, и все работает отлично. Этот проект следует стандартной архитектуре проекта Django, не считая моих тестов в их собственном каталоге:
django_project/
manage.py
settings.py
urls.py
app1/
models.py
views.py
urls.py
tests/
app2/
...
Если я запускаю тесты в такой ситуации, то отлично!
Это все немного по-другому, когда речь идет о среде сборки. Там я попытался проверить svn мой проект и приложения и сделать пути ко всем из них доступными в моем каталоге bin (и я надеюсь, что это также означает, что он будет доступен для любой магической работы djangorecipe). Во всяком случае, так выглядит моя сборка:
[buildout]
parts =
django_project
app1
app2
django
extra-paths =
${buildout:directory}
${buildout:directory}/parts
${buildout:directory}/parts/django_project
${buildout:directory}/parts/app1
${buildout:directory}/parts/app2
[django_project]
recipe = infrae.subversion
urls =
https://svn/django_projects/trunk/ .
[app1]
recipe = infrae.subversion
urls
= https://svn/path/app1/trunk/ .
[app2]
recipe = infrae.subversion
urls =
https://svn/path/app2/trunk/ .
[django]
recipe = djangorecipe
version = 1.2
project = django_project
projectegg = django_project
wsgi=true
settings=settings
extra-paths = ${buildout:extra-paths}
test =
app1
app2
Когда я запускаю сборку, я получаю следующее дерево каталогов.
django_buidout/
...
bin/
django
django.wsgi
test
parts/
django/
django_project/
__init__.py
settings.py
...
app1/
setup.py
app1/
__init__.py
tests/
app2/
setup.py
app2/
__init__.py
tests/
Я могу добраться до оболочки django, чтобы она работала. Но если я запускаю ./bin/test, я получаю 'ImportError: Нет модуля с именем django.project.urls'. (точечная нотация не является ошибкой, моя django_project.settings.URL_CONF = django_project.urls) Это интересно, потому что, если я запускаю оболочку, я могу импортировать django_project.urls. В дополнение к этому, если я запускаю тесты через ./bin/django test app1, все тестовые прогоны. app1 интересен тем, что не имеет тестов для представлений.
В тестах представлений я использую urlresolvers.reverse, который также отображается в трассировке вместе с классом django.tests Client ().
Есть ли что-то в моей архитектуре, что испортилось, или urlresolvers.reverse делает что-то, о чем я не знаю?
Большое спасибо,
Todd