Sfortunatamente, questo non è facile come speri al momento. Come avrai notato, l'utilizzo di self.client.session
direttamente non funzionerà se non hai chiamato altre visualizzazioni che hanno impostato le sessioni con i cookie di sessione appropriati per te. Lo store/cookie di sessione deve quindi essere impostato manualmente o tramite altre visualizzazioni.
C'è un biglietto aperto per rendere più facile per le sessioni di finta con il client di prova: https://code.djangoproject.com/ticket/10899
Oltre alla soluzione nel biglietto, c'è un trucco che può essere utilizzato se si utilizza django.contrib.auth
. Il metodo client di prova login()
imposta un archivio/cookie di sessione che può essere utilizzato successivamente nel test.
Se si dispone di altre viste che impostano le sessioni, la richiesta verrà eseguita anche con il trucco (probabilmente si avrà un'altra vista che imposta le sessioni, altrimenti la vista che legge le sessioni sarà piuttosto inutilizzabile).
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
...? Alcuni esempi, per favore. –