在Django单元测试中获取/设置会话密钥

在Django单元测试中获取/设置会话密钥,django,unit-testing,session-keys,Django,Unit Testing,Session Keys,我正在将会话密钥保存到一个对象,以便将数据关联到匿名用户。在单元测试中,我试图使用测试客户机设置一个固定的键,但是在POST请求期间键会发生变化。例如: //tests.py def测试后自身: 会话密钥=123 session=self.client.session 会话['session_key']=会话_key session.save response=self.client.post'/post url/' self.assertEqualsresponse.content,会话密钥

我正在将会话密钥保存到一个对象,以便将数据关联到匿名用户。在单元测试中,我试图使用测试客户机设置一个固定的键,但是在POST请求期间键会发生变化。例如:

//tests.py def测试后自身: 会话密钥=123 session=self.client.session 会话['session_key']=会话_key session.save response=self.client.post'/post url/' self.assertEqualsresponse.content,会话密钥 断言错误:b'str60i3gjpvru8f7mellsdf2y3xd2jgh'!='123' //views.py @需要\u http\u方法['POST'] def ajax_postrequest: 返回HttpResponserequest.session.session_密钥 基于此,我尝试在更改会话密钥之前包含另一个GET-response-response=self.client.GET'/,但似乎没有帮助

我做错了什么


编辑:我正在使用Django 1.9.6和Python 3.4。在Daniel Roseman的回答后更改了问题标题。

我不太确定您在这里做什么。会话['session_key']与session.session_key不同;前者只是会话中的另一个值


但是没有理由对会话密钥执行任何显式操作。它应该是一个完全不透明的值,您的代码永远不会与之交互。如果要将数据与匿名用户的会话相关联,则应将数据存储在会话中,而不是相反。

这一点很好。我这样做是为了更容易根据匿名用户的历史数据进行计算-你对如何处理这个问题有其他建议吗?如果我把它存储在会话中,我最终还是要从那里提取数据。不管怎样,从你的回答中,我意识到我可以在测试开始时选择session.session_键,然后创建所需的模型。谢谢