Django测试:设置cookie(Django 1.11+)

时间:2017-09-30 07:24:31

标签: django session testing

我在Django测试中设置cookie有麻烦。

class Test_views(TestCase):

    def test_set_cookie(self):
        session = self.client.session
        session['mycookie'] = 'testcookie'
        session.save()
        response = self.client.get(reverse('homepage')) 
        ...

我在视图中打印cookie以确定:

views.py

... 
def homepage(request):
        print(request.session.keys())
        ...

实际上,cookie mycookie不存在。

显然,这是设置cookie的正确方法:

https://docs.djangoproject.com/en/1.11/topics/testing/tools/#django.test.Client.session

顺便说一句,使用request.factory,它正在运行:

def add_session_to_request( request):
    """Annotate a request object with a session (RequestFactory doesn't permit Session"""
    middleware = SessionMiddleware()
    middleware.process_request(request)
    request.session.save()


class Test_views(TestCase): # testing with cookies set

    def setUp(self):
        super(Setting_cookie, self).setUp()
        factory = RequestFactory()
        self.request = factory.get(reverse('homepage'))
        add_session_to_request(self.request)

     def test_set_cookie(self):
        session = self.request.session
        session['mycookie'] = 'testcookie'
        session.save()
        response = homepage(self.request) 
        ...

1 个答案:

答案 0 :(得分:0)

我在设置中使用了错误的SESSION_ENGINE:

SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'

我忘记了我已经做到了......