Django testing

Django testing

Django testing — Are routines that check the operation of your code.

from django.test import TestCase
from myapp.models import Animal

class AnimalTestCase(TestCase):
    def setUp(self):
        Animal.objects.create(name="lion", sound="roar")
        Animal.objects.create(name="cat", sound="meow")

    def test_animals_can_speak(self):
        """Animals that can speak are correctly identified"""
        lion = Animal.objects.get(name="lion")
        cat = Animal.objects.get(name="cat")
        self.assertEqual(lion.speak(), 'The lion says "roar"')
        self.assertEqual(cat.speak(), 'The cat says "meow"')

Testing a Web application is a complex task, because a Web application is made of several layers of logic – from HTTP-level request handling, to form validation and processing, to template rendering. With Django’s test-execution framework and assorted utilities, you can simulate requests, insert test data, inspect your application’s output and generally verify your code is doing what it should be doing.

Running tests

# Run all the tests in the animals.tests module
$ ./ test animals.tests

# Run all the tests found within the 'animals' package
$ ./ test animals

# Run just one test case
$ ./ test animals.tests.AnimalTestCase

# Run just one test method
$ ./ test animals.tests.AnimalTestCase.test_animals_can_speak

Django testing — Structure map

Clickable & Draggable!

Django testing — Related pages: