Utils for test setup based on test utils from django-cms
Also take a look at django-better-test and django-app-manage.
For the current stable version:
pip install django-easytests
For the development version:
pip install -e git+git://github.com/fivethreeo/django-easytests.git@develop#egg=django-easytests
#!/usr/bin/env python from djeasytests.testsetup import TestSetup settings = dict( ROOT_URLCONF='appname_test_project.urls', INSTALLED_APPS = [ 'appname_test_project', 'appname', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.admin', 'django.contrib.sites', 'django.contrib.staticfiles' ] ) testsetup = TestSetup( appname='appname', test_settings=settings ) if __name__ == '__main__': testsetup.run(__file__)
How to lay out files for using django-easytests:
django-appname ... appname/ __init__.py views.py urls.py models.py tests.py testing/ appname_test_project/ __init__.py templates/appname/ README.rst MANIFEST.in LICENSE .travis.yml develop.py ...
develop.py test develop.py --failfast test develop.py --parallel test develop.py --migrate test develop.py test test_labels here develop.py timed test develop.py isolated test develop.py manage help develop.py manage syncdb develop.py server
Simply set a environment varable:
export DATABASE_URL="postgres://myuser:mypass@localhost/mydb"
Then test, server and manage will use this database.
Useful for testing projects
ROOT_URLCONF = 'appname.urls', INSTALLED_APPS = [ 'appname'. 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.admin', 'django.contrib.sites', 'django.contrib.staticfiles' ]
from appname.base_settings import * from local_settings import *
SOME_LOCAL_SETTING = False
settings = dict( DEBUG = True ) from appname import base_settings testsetup = TestSetup( appname='appname', test_settings=settings, fallback_settings=base_settings ) if __name__ == '__main__': testsetup.run(__file__)
By default fallback_settings gets merged with default_settings ( by default django.conf.global_settings) like in djangos settings.configure.
This can be changed by passing default_settings with a module/object other than global_settings to TestSetup.
from appname import other_global_settings testsetup = TestSetup( appname='appname', test_settings=settings, fallback_settings=base_settings, default_settings=other_global_settings )
Say you want this filestructure when the amount of test increase exponentially:
django-appname ... appname/ __init__.py views.py urls.py models.py testing/ appname_test_project/ __init__.py templates/appname/ appname_modeltests/ __init__.py tests.py models.py appname_admintests/ __init__.py tests.py models.py appname_somothertests/ __init__.py tests.py models.py README.rst MANIFEST.in LICENSE .travis.yml develop.py ...
In develop.py:
from djeasytests.testsetup import TestSetup settings = dict( ROOT_URLCONF='appname_test_project.urls', INSTALLED_APPS = [ 'appname_modeltests', 'appname_admintests', 'appname_somothertests', 'appname_test_project', 'appname', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.admin', 'django.contrib.sites', 'django.contrib.staticfiles' ] ) testsetup = TestSetup( appname='appname', test_settings=settings, test_modules=['appname_modeltests','appname_admintests','appname_somothertests'] ) if __name__ == '__main__': testsetup.run(__file__)