A lightweight Django manage.py litetest
command for quick unittest
runs.
If you've been developing in Django for a while, you probably have plenty of tests written. This is great, but they probably take a long time to run. If you do any sort of Test-Driven Development, slow tests means a frustrating edit-test loop.
django-litetest helps you run quick, lightweight tests by doing a few things:
- Use in-memory SQLite databases instead of your usual test databases,
- Use in-memory caches instead of your usual caches,
- If you're using South, creates models directly.
With django-litetest, fixing a bug becomes as quick as this:
- Add a new test to reproduce the bug,
- Run
manage.py litetest
testname, - Edit the code to fix the bug,
- Run
manage.py litetest
testname again, - Run
manage.py test
to ensure that all your tests pass.
You can get a copy of the source by using:
$ git clone https://github.com/sfllaw/django-litetest.git
This app requires:
- Python 2.6 or higher,
- Django 1.3 or higher,
- SpatiaLite (optional for GIS).
As well, this app is available from PyPi:
$ pip install django-litetest
In your Django settings
file:
- Add
'django_litetest'
toINSTALLED_APPS
(after'south'
if you are using it), - Add
'LITETEST': True
to each of theDATABASES
you want sped up, - Add
'LITETEST': True
to each of theCACHES
you want sped up, - If you are using South, set
SOUTH_TESTS_MIGRATE = 'LITETEST'
to avoid migrations.
INSTALLED_APPS = ( 'south', 'django_litetest', ... ) DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'db', 'USER': 'user', 'PASSWORD': 'password', 'HOST': 'db.example.com', 'PORT': '', 'LITETEST': True, } } CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache', 'LOCATION': 'memcache.example.com:11211', 'LITETEST': True, }, } SOUTH_TESTS_MIGRATE = 'LITETEST'
Please check our issue tracker for known bugs and feature requests.
We accept pull requests for fixes and new features.
Simon Law <[email protected]>