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 litetesttestname, - Edit the code to fix the bug,
- Run
manage.py litetesttestname again, - Run
manage.py testto 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': Trueto each of theDATABASESyou want sped up, - Add
'LITETEST': Trueto each of theCACHESyou 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 <sfllaw@sfllaw.ca>