Lamentablemente, esto no es tan fácil como se esperaba en este momento. Como habrás notado, simplemente usar self.client.session
directamente no funcionará si no has llamado a otras vistas que han configurado las sesiones con las cookies de sesión apropiadas para ti. La tienda/cookie de sesión se debe configurar manualmente o a través de otras vistas.
Hay un billete abierto para que sea más fácil de sesiones simuladas con el cliente de prueba: https://code.djangoproject.com/ticket/10899
Además de la solución en el billete, hay un truco que se puede utilizar si está utilizando django.contrib.auth
. El método de los clientes de prueba login()
configura una tienda/cookie de sesión que se puede usar más adelante en la prueba.
Si tiene cualquier otra vista que establezca sesiones, solicitarlas también servirá (probablemente tenga otra vista que establezca sesiones, de lo contrario su vista que lee las sesiones será bastante inutilizable).
from django.test import TestCase
from django.contrib.auth.models import User
class YourTest(TestCase):
def test_add_docs(self):
# If you already have another user, you might want to use it instead
User.objects.create_superuser('admin', '[email protected]', 'admin')
# self.client.login sets up self.client.session to be usable
self.client.login(username='admin', password='admin')
session = self.client.session
session['documents_to_share_ids'] = [1]
session.save()
response = self.client.get('/') # request.session['documents_to_share_ids'] will be available
...? Algunos ejemplos, por favor. –