Django cuándo usar el método de desmontaje
Según los documentos:
A TestCase, por otro lado, no trunca las tablas y no recarga los datos iniciales al comienzo de una prueba. En su lugar, encierra el código de prueba en una transacción de base de datos que se revierte al final de la prueba. También evita que el código bajo prueba emita operaciones de confirmación o reversión en la base de datos, para garantizar que la reversión al final de la prueba restaure la base de datos a su estado inicial. Para garantizar que todo el código TestCase comience con una base de datos limpia, el corredor de pruebas de Django ejecuta primero todas las pruebas TestCase, antes que cualquier otra prueba (por ejemplo, doctests) que pueda alterar la base de datos sin restaurarla a su estado original.
Así que si tengo una prueba que se ve así:
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 unteardown
o elTestCase
clase cuidarlo? Si es así, ¿cuándo se debe usar lateardown
étodo @ dada la disponibilidad deTestCase
¿clase