<snip>
Hi,
I managed to create the standalone application, that's the good news.
I have some questions on testing the app below.
I ended up making a virtualenv for the application. Afterwards, I copied the relevant files
(templates, view, urls, static) to this directory.
I still need to add docs, complete test suites, manifest.In and other text files.
But what I have now works.
To test it, I made a new project, copied the application directory to the projects src
and installed it from there with "python setup.py develop".
application directory
├── bin
│ ├── activate
│ ├── ...
├── include
│ └── ...
├── lib
│ └── python2.7
├── src
│ ├── django
├── manage.py
├── setup.py
└── mycompany_language
├── __init__.py
├── settings.py
├── static
│ └── mycompany_language
├── templates
│ └── mycompany_language
├── tests
│ ├── __init__.py
│ ├── runtests.py
│ ├── testsettings.py
│ ├── tests.py
├── urls.py
└── views
├── __init__.py
├── views_language.py
What I spent most time on, was figuring out how I could run the tests to
test the application. "python manage.py test" doesn't work if I use
the "normal" settings.py as it only contains a few constants.
The error is: there is no database defined in there.
I use the settings file to specify LANGUAGES, DEFAULT_LANGUAGE and LANGUAGE_CODE
and nothing more.
After looking at some other apps, I figured out that I could use a second
settings file specific to testing (testsettings.py).
If I specify this testsettings file in the "python manage.py test" command,
the command "python manage.py test --settings=mycompany_language.tests.testsettings" works.
However, running a specific test fails:
$ python manage.py test --settings=mycompany_language.tests.testsettings mycompany_language.SetLanguageTest
>>> "App with label company_language is missing a models.py module."
Indeed, in this example, I don't have models.py file and providing an empty one seemed weird.
Besides, the settings file doesn't have a proper INSTALLED_APPS stance.
Anyway, I then tried to run the tests from the tests directory without manage.py
In tests.py, I have this at the top
=================================================
import os, sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'testsettings'
from django.conf import settings
...
=================================================
testsettings.py
=================================================
APP_PATH=os.path.abspath(os.path.join(os.path.dirname(__file__),".."))
PROJECT_PATH=os.path.abspath(os.path.join(APP_PATH,".."))
sys.path += [APP_PATH, PROJECT_PATH]
# Import main settings
from mycompany_language.settings import *
...
=================================================
I could then run the tests from the test directory with "python tests.py"
This complained about not finding the module company_language.tests
ImportError: No module named company_language.tests
This is why i added these 3 lines to testsettings.py
APP_PATH=os.path.abspath(os.path.join(os.path.dirname(__file__),".."))
PROJECT_PATH=os.path.abspath(os.path.join(APP_PATH,".."))
sys.path += [APP_PATH, PROJECT_PATH]
And then running the tests finally worked.
I do have some questions:
1. Is there a problem with running application tests not via "python manage.py test"?
If the latter is preferable, I suppose I do have to specify the APP in there.
I would like to avoid putting too much in the settings file as I just meant to use it
for some application specific settings.
2. Is it ok to specify application specific constants in the settings file?
In my test project, I then access them like this:
from mycompany_language.settings import *
For the doc, I will look into Sphinx.
Regards,
Benedict
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
No comments:
Post a Comment