views:

21

answers:

0

Hello Everyone,

I've got a question about testing my Django applications in a built out Django project.

First, I've got the same project not built out and everything works fine. This project follows the standard Django project architecture apart from putting my tests in their own directory:

django_project/
  manage.py
  settings.py
  urls.py
  app1/
    models.py
    views.py
    urls.py
    tests/
  app2/
    ...

If I run the tests in this situation great!

This is all a little bit different when it comes to buildout environment. There I've tried to svn check my project and applications and make the paths to all of them available in my bin directory (and I hope that also means making it available for whatever magic djangorecipe is doing). Anyway this is what my buildout looks like:

[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

When I run the buildout I get the following directory tree.

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/

I can get to the django shell so that works. But if I run ./bin/test I get an 'ImportError: No module named django.project.urls'. (the dot notation is not a mistake my django_project.settings.URL_CONF=django_project.urls) This is interesting because if I start the shell I can import django_project.urls. In addition to that if I run the tests through the ./bin/django test app1 all the test run. app1 is interesting because it has no tests on views.

In the views tests I'm using urlresolvers.reverse and that also shows up in the traceback along with the django.tests Client() class.

Is there something in my architecture that is messed up, or is urlresolvers.reverse doing something I'm not aware of?

Many thanks,

Todd