【问题标题】:Django UnitTest - Setting session variableDjango UnitTest - 设置会话变量
【发布时间】:2016-11-07 09:27:36
【问题描述】:

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

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

【问题讨论】:

标签: django django-testing django-tests


【解决方案1】:

这通常是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 收集的。

【讨论】:

  • 为什么不在setUp下设置会话?
  • @alias51 如果你愿意,你可以。这更像是一个风格问题。如果他们大量使用一个特定的会话密钥,那么是的,应该在设置中完成。如果这是一次性的(可能针对单个案例测试某种数据),这很好。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2014-09-27
    • 2013-06-23
    • 1970-01-01
    • 2015-09-20
    • 2018-06-16
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    相关资源
    最近更新 更多