如何在Django测试用例中设置Cookie?
|
我正在努力弄清楚这一点,当我正常运行我的应用程序时,会话可以工作,但是我无法弄清楚如何在测试用例中设置会话中的数据。
文档说,在一个测试用例中,您必须保存会话以应用更改,然后再发出请求。 https://docs.djangoproject.com/zh-CN/1.2/topics/testing/#persistent-state
例如
from django.test import TestCase
class TestLogin(TestCase):
def test_processuser(self):
redirect = \'/processuser/\'
session = self.client.session
session[\"id\"] = \'1234\'
session.save()
response = self.client.get(redirect)
但是从self.client.session返回的会话对象只是普通的python字典?
深入到Client.session调用代码中是这样的:
def _session(self):
\"\"\"
Obtains the current session variables.
\"\"\"
if \'django.contrib.sessions\' in settings.INSTALLED_APPS:
engine = import_module(settings.SESSION_ENGINE)
cookie = self.cookies.get(settings.SESSION_COOKIE_NAME, None)
if cookie:
return engine.SessionStore(cookie.value)
return {}
session = property(_session)
cookie = self.cookies.get(settings.SESSION_COOKIE_NAME, None)
返回None
,因此它只返回字典而不是会话存储。
看起来我必须在测试客户端中做更多准备,然后再保存会话?没有真正的经验,对此将不胜感激。
Django 1.2.5
Python 2.6.5
干杯,
阿西姆
没有找到相关结果
已邀请:
4 个回复
室邢
应该做。有关更多信息,请参考文档。
戊袱
对象上设置cookie,但是如果使用
类,则可以这样做。因此,而不是(说):
你做:
其中
是与\'/ foo \'路径相对应的视图,即您要测试的视图。 有人。
绵扇寸访
函数将丢弃您的cookie。例如:
为了确保您的Cookie在测试过程中仍然有效,请致电注销页面,而不要使用
函数,如下所示:
粱委教
是标准库中
的实例,其行为类似于
。因此您可以使用“ 18”批量更新Cookie值。如果您想更改其他Cookie值,例如
,
等,这将很有用。 最后,如果要设置
,可以像这样重用django的帮助器:
注意盐。它的两端必须匹配(签名和检索)。用于签名的不同盐值会生成一个不同的cookie,当您致电
时无法检索该cookie