Python Django单元测试向会话添加变量
在unittest中,我需要向会话添加一个变量,因为该变量在正在测试的视图中使用。django文档说这可以通过以下方式实现(): 这个代码示例实际上不起作用,因为您将得到一个错误,即dict没有函数save。我还尝试了各种其他方法来更改会话dict中的内容,但还没有找到一种方法来更改它。 我知道这意味着什么,我得到的是一个dict对象,所以它没有保存功能。但是会话dict在添加密钥时也不会更新Python Django单元测试向会话添加变量,python,django,unit-testing,session,Python,Django,Unit Testing,Session,在unittest中,我需要向会话添加一个变量,因为该变量在正在测试的视图中使用。django文档说这可以通过以下方式实现(): 这个代码示例实际上不起作用,因为您将得到一个错误,即dict没有函数save。我还尝试了各种其他方法来更改会话dict中的内容,但还没有找到一种方法来更改它。 我知道这意味着什么,我得到的是一个dict对象,所以它没有保存功能。但是会话dict在添加密钥时也不会更新 文档在使用self.client.session时会显示状态,它应该返回SessionStore对象,
文档在使用self.client.session时会显示状态,它应该返回SessionStore对象,而不是字典。Django中现在似乎有一个bug,因此未经身份验证的用户无法更改会话。这是对应的票证:
解决方法是创建一个虚拟视图,其中设置了会话变量,并使用Client.get调用该视图(“url\u of\u dummy\u view”)。目前Django中似乎存在一个bug,因此未经身份验证的用户无法更改会话。这是对应的票证:
解决方法是创建一个虚拟视图,其中设置了会话变量,并使用Client.get调用该视图(“url\u of\u dummy\u view”)。由@Sam Stoelinga引用的票据已作为副本关闭。可以找到相应的票证 要保存会话数据,您必须使用经过身份验证的用户。我找到了解决办法
@Sam Stoelinga引用的票据已作为副本关闭。可以找到相应的票证 要保存会话数据,您必须使用经过身份验证的用户。我找到了解决办法
您使用的是
unittest
还是django.utils.unittest
?为什么需要保存它?你在哪里检查其他地方的会话?随便猜一猜,试着删除session.save()
行,看看它是否有效。我阅读了django.test.client.client的源代码,结果表明session属性只是引擎中的session对象。它应该由会话中间件自动保存。我试过了,这也是我调试后的想法,发现它只是一个dict。我会再试一次,也许我做得不对。@Elf Sternberg:它不起作用,只是再试一次self.client.session['user\u id']=self.user.id
您使用的是unittest
还是django.utils.unittest
?为什么需要保存它?你在哪里检查其他地方的会话?随便猜一猜,试着删除session.save()
行,看看它是否有效。我阅读了django.test.client.client的源代码,结果表明session属性只是引擎中的session对象。它应该由会话中间件自动保存。我试过了,这也是我调试后的想法,发现它只是一个dict。我会再试一次,也许我做得不对。@Elf Sternberg:它不起作用,只是再试一次<代码>self.client.session['user\u id']=self.user.id
def test_something(self):
session = self.client.session
session['somekey'] = 'test'
session.save()
class BlogAdminTestCase(TestCase):
def setUp(self):
# Setup Test User
User.objects.create_user(
username='foo',
password='bar'
)
# Must login to modify session variables
self.client.login(username='foo', password='bar')
s = self.client.session
s['my_session_variable'] = 'Yay!'
s.save()