In Django ist bereits ein Framework für Softwaretests integriert - das “Python unit testing framework”.
Der Test Runner erstellt bei jeden Start eine SQLite Datenbank für die Tests und lässt alle Tests voneinander abgekapselt in Transaktionen laufen. Bei der Auswahl des Datenbanksystems richtet sich der Test Runner nach dem Backend, der in der settings.py konfiguriert wurde.
Mit dem Befehl python manage.py test werden alle für das Projekt installierten Applikationen getestet:
$ python manage.py test
Creating test database for alias 'default'...
.........................................................................
.........................................................................
.........................................................................
.........................................................................
..............................
----------------------------------------------------------------------
Ran 322 tests in 3.293s
OK
Destroying test database for alias 'default'...
Man kann auch gezielt eine Applikation testen:
$ python manage.py test recipes
Creating test database for alias 'default'...
..
----------------------------------------------------------------------
Ran 2 tests in 0.097s
OK
Destroying test database for alias 'default'...
Mit dem Parameter -v 0 wird der Großteil der Ausgaben des Test Runners unterdrückt:
$ python manage.py test recipes -v 0
----------------------------------------------------------------------
Ran 2 tests in 0.007s
OK
Umgekehrt kannst du mit dem Parameter -v 2 alle Details beim Ablaufen der Tests beobachten:
$ python manage.py test recipes -v 2
Creating test database for alias 'default' (':memory:')...
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table django_admin_log
Creating table recipes_category
Creating table recipes_recipe_category
Creating table recipes_recipe
Installing custom SQL ...
Installing indexes ...
Installed 4 object(s) from 1 fixture(s)
test_basic_addition (recipes.tests.SimpleTest) ... ok
Doctest: recipes.tests.__test__.doctest ... ok
----------------------------------------------------------------------
Ran 2 tests in 0.008s
OK
Destroying test database for alias 'default' (':memory:')...