тестовая команда djangorecipe - PullRequest
3 голосов
/ 16 июля 2010

У меня есть вопрос о тестировании моих приложений 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

...