Django UnitTest - 设置会话变量

时间:2016-07-05 13:48:01

标签: django django-testing django-tests

我有一个基于django_webtest.WebTest的Django单元测试类,我找不到在测试期间设置会话变量的正确方法。我尝试了以下,但我不工作

from django_webtest import WebTest
class TestMyTests(WebTest):
    def test_my_tesst(self):
       ... 
       self.app.session['var1'] = 'val1'
       ...

2 个答案:

答案 0 :(得分:3)

这通常是Client的用途。它可以访问会话数据。我不能代表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 Documentation测试工具中收集的。

答案 1 :(得分:0)

如果您使用的是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

最重要的是在更改会话后保存会话。否则,它将无效。