Acelere seus testes de Django

Se você usar django.test.TestCase para escrever seus testes, na maioria das vezes você estará preparando instâncias de modelo em seu setUpmétodo:

from django.utils import unittest
from myapp.models import Animal

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

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

Conforme seus casos de teste crescem, eles levam mais e mais tempo para serem executados, em parte porque no início de cada teste, antes de setUp()ser executado, o Django irá descarregar o banco de dados, retornando o banco de dados ao estado em que estava diretamente após a chamada do syncdb.

Você pode economizar algum tempo usando um método de classe:

@classmethod
def setUpClass(cls):
cls
.lion = Animal(name="lion", sound="roar")
cls
.cat = Animal(name="cat", sound="meow")

Isso criará os objetos uma vez por caso de teste, acelerando seus testes.