【发布时间】:2011-09-30 16:24:12
【问题描述】:
在我的单元测试中,我需要向会话中添加一个变量,因为该变量用于正在测试的视图中。 django 文档说这可以通过以下方式(https://docs.djangoproject.com/en/1.3/topics/testing/#django.test.client.Client.session):
def test_something(self):
session = self.client.session
session['somekey'] = 'test'
session.save()
这个代码示例实际上是行不通的,因为你会得到一个dict没有save函数的错误。我还尝试了各种其他方法来更改会话字典中的内容,但还没有找到更改它的方法。 我知道这意味着什么,我得到的是一个 dict 对象,所以它没有保存功能。但是会话字典在添加键时也不会更新。
使用 self.client.session 时的文档状态应该返回一个 SessionStore 对象而不是字典。
【问题讨论】:
-
你使用的是
unittest还是django.utils.unittest? -
为什么需要保存?您在哪里查看其他地方的会话?
-
就像一个疯狂的猜测,尝试删除
session.save()行,看看它是否有效。我对 django.test.client.Client 源代码的阅读表明,会话属性只是直接从引擎中取出的会话对象。它应该由 Session 中间件自动保存。 -
我试过了,这也是我调试后的想法,发现它只是一个字典。会再试一次,也许我做得不对。
-
@Elf Sternberg:不行,再试一次。
self.client.session['user_id'] = self.user.id
标签: python django unit-testing session