pytest-django is a plugin for py.test that provides a set of useful tools for testing Django applications and projects.
These packages are required to use pytest-django, and should be installed separately.
- Django 1.3+ (1.4 is supported)
- py.test
pip install pytest-django
- Make sure
DJANGO_SETTINGS_MODULE
is defined and and run tests with thepy.test
command. - (Optionally) If you put your tests under a tests directory (the standard Django application layout), and your files are not named
test_FOO.py
, see the FAQ
Documentation is available on Read the Docs.
Running the test suite with py.test offers some features that are not present in Djangos standard test mechanism:
- Smarter test discovery (no need for
from .foo import *
in your test modules).- Less boilerplate: no need to import unittest, create a subclass with methods. Just write tests as regular functions.
- Injection of test depencies with funcargs
- No need to run all tests, it is easy to specify which tests to run.
- Database re-use: no need to re-create the test database for every test run.
- No hacks required to only run your apps, and not the 3rd party/contrib apps that is listed in your
INSTALLED_APPS
.- There are a lot of other nice plugins available for py.test.
- No pain of switching: Existing unittest-style tests will still work without any modifications.
See the py.test documentation for more information on py.test.
Report issues and feature requests at the github issue tracker.