Se você usar django.test.TestCase para escrever seus testes, na maioria das vezes você estará preparando instâncias de modelo em seu setUp
mé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.