К сожалению, это не так просто, как вы надеетесь в данный момент.Как вы могли заметить, простое использование self.client.session
не будет работать, если вы не вызывали другие представления, которые настроили сеансы с соответствующими сессионными cookie-файлами для вас.Затем хранилище / cookie сеанса необходимо настроить вручную или с помощью других представлений.
Существует открытый тикет, чтобы упростить имитацию сеансов с помощью тестового клиента: https://code.djangoproject.com/ticket/10899
Помимо обходного пути в заявке, есть хитрость, которую можно использовать, если вы используете django.contrib.auth
.Метод login()
тестовых клиентов устанавливает хранилище / файл cookie сеанса, который можно будет использовать позже в тесте.
Если у вас есть другие представления, которые устанавливают сеансы, их запрос тоже поможет (возможно, у вас естьдругое представление, которое устанавливает сеансы, иначе ваше представление, которое читает сеансы, будет довольно непригодным для использования).
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', 'foo@foo.com', '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