Django UnitTest - установка переменной сеанса
У меня есть класс модульного теста Django, основанный на django_webtest.WebTest, и я не могу найти правильный способ установки переменной сеанса во время теста. Я пробовал следующее, но я не работаю
from django_webtest import WebTest
class TestMyTests(WebTest):
def test_my_tesst(self):
...
self.app.session['var1'] = 'val1'
...
2 ответа
Это, как правило, для чего нужен Клиент. Он имеет доступ к данным сеанса. Я не могу говорить за django_webtest
, поскольку это внешняя библиотека для django, но внутри для юнит-тестирования, вы можете получить доступ и установить данные сеанса следующим образом:
import unittest
from django.test import Client
class TestMyTests(unittest.TestCase):
def setUp(self):
self.client = Client()
def test_my_test(self):
...
session = self.client.session
session['somekey'] = 'test'
session.save()
...
Приведенный выше пример был взят из документации Django по инструментам тестирования.
Если вы используете pytest
Вы можете сделать следующее:
import pytest
from django.test import Client
@pytest.mark.django_db # this is used if you are using the database
def test_my_tesst():
# code before setting session
c = Client()
session = c.session
session['var1'] = 'val1'
session.save()
# code after setting session
Наиболее важным является сохранение сеанса после его изменения. В противном случае это не имеет никакого эффекта.