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.
- 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.
The current supported versions of Python, Django and pytest are:
- Python 2.5-2.7
- Django 1.3-1.5
- py.test 2.3.4+