django-shotgun
django-shotgun copied to clipboard
Test entire Django sites
django-shotgun
Created by Stephen McDonald <http://twitter.com/stephen_mcd>_
django-shotgun is a Django application that provides the ability
to validate HTTP status codes across your entire Django application.
django-shotgun consists of two parts, a management command_
called load_shotgun that prepares django-shotgun with a
snapshot of your database to use in the Django test case_, and the
test case itself which spiders your Django site testing for valid HTTP
status codes for every URL it finds.
Installation
Assuming you have pip_ installed, the easiest method is to install
directly from pypi by running the following command::
$ pip install -U django-shotgun
Otherwise you can check out the source directly and install it via::
$ python setup.py install
Once installed you can then add django_shotgun to your
INSTALLED_APPS.
Shotgun Loading
django-shotgun is most effective when used in conjunction with
real data. This is in contrast to the approach a Django test case will
take where it purposely does not use the project's real database to
run tests. django-shotgun deals with this by providing a
management command called load_shotgun which dumps the contents of
your database to a fixture called shotgun.json. Under the hood,
load_shotgun extends the built-in dumpdata_ command and supports
the same options, with one extra option called path which allows
you to define where the fixture file should be saved to::
$ python manage.py load_shotgun --path=/path/to/fixtures/
If the path option is omitted, the fixture file will be saved to
the root of the current project.
Shotgun Firing
The django-shotgun test case is a standard Django test case and
can therefore be run by calling the built-in test management
command::
$ python manage.py test
The django-shotgun test case will first test the URL / and
parse URLs found in <a> tags from the resulting response. It then
continues this process for each URL it finds until all URLs have been
tested. <form> tags and their field elements are also parsed and
each form is tested with both a GET and POST, first without
any field data and then with test values for each form field. The test
case will fail if any response has a status code other than 200.
Configuration
The following settings can be defined in your project's settings
module to control the behaviour of django-shotgun.
SHOTGUN_EXCLUDE_APPS- A list of app names to exclude when generating the shotgun fixtures file. Defaults to[].SHOTGUN_EXCLUDE_URLS- A list of URLs to exclude from checking. Defaults to[].SHOTGUN_FIXTURE_NAME- The name of the fixture file that will be saved and loaded from. Defaults toshotgun.json.SHOTGUN_FIXTURE_PATH- The path to where the fixture file will be saved and loaded from. Defaults to the project's root directory.SHOTGUN_ROOT_URL- The first URL that the test case will request. Defaults to/.
.. _management command: http://docs.djangoproject.com/en/dev/ref/django-admin/#ref-django-admin
.. _Django test case: http://docs.djangoproject.com/en/dev/topics/testing/#testcase
.. _pip: http://www.pip-installer.org/
.. _dumpdata: http://docs.djangoproject.com/en/dev/ref/django-admin/#dumpdata-appname-appname-appname-model
.. _test: http://docs.djangoproject.com/en/dev/ref/django-admin/#test-app-or-test-identifier