De acuerdo con los documentos:Django cuándo usar el método de desmontaje
Un TestCase, por el contrario, no trunca las tablas y volver a cargar datos iniciales al comienzo de una prueba. En su lugar, incluye el código de prueba en una transacción de base de datos que se retrotrae al final de la prueba . También evita que el código bajo prueba emita cualquier confirmación o operaciones de retrotracción de en la base de datos, para garantizar que la reversión al al final de la prueba restaura la base de datos a su estado inicial. En para garantizar que todos los códigos TestCase comiencen con una base de datos limpia , el corredor de prueba Django ejecuta primero todas las pruebas TestCase antes de cualesquiera otras pruebas (por ejemplo, doctest) que puedan alterar la base de datos sin restaurándola a su estado original.
Así que si tengo una prueba que se parece a esto:
class GeneralUserCreateTest(TestCase):
def setUp(self):
create_roletypes()
create_permissiontypes()
self.client = Client()
self.event = create_event()
def test_create(self):
create_url = reverse('event_user_signup', args=[self.event.slug])
post_data = {
'signup-account-email': '[email protected]',
'signup-account-password': 'foobar',
'signup-account-password2': 'foobar',
'signup-account-first_name': 'Foo',
'signup-account-last_name': 'Bar',
}
response = self.client.post(create_url, data=post_data)
self.assertEqual(response.status_code, 302)
# check creation of user object
self.assertEqual(User.objects.filter(email=post_data['signup-account-email']).count(), 1)
user = User.objects.get(username=post_data['signup-account-email'])
# user and profile objects created
self.assertEqual(User.objects.all().count(), 1)
self.assertEqual(Profile.objects.all().count(), 1)
# get the first user and profile object to test against submitted field
user = User.objects.all()[0]
profile = Profile.objects.all()[0]
role = Role.objects.filter(event=self.event, profiles=profile)[0]
self.assertEqual(role.roletype.name, 'General')
self.assertEqual(user.username, post_data['signup-account-email'])
self.assertEqual(user.email, post_data['signup-account-email'])
self.assertEqual(profile.first_name, post_data['signup-account-first_name'])
self.assertEqual(profile.last_name, post_data['signup-account-last_name'])
¿Sigue siendo necesario ejecutar un método teardown
o tiene la clase TestCase
cuidar de él? Si es así, ¿cuándo se debe usar el método teardown
dada la disponibilidad de la clase TestCase
?