gpt4 book ai didi

django - 测试时在 Django 中使用 session 对象?

转载 作者:行者123 更新时间:2023-11-28 19:53:51 25 4
gpt4 key购买 nike

我已经创建了一个包含三个应用程序的小型 django 项目,我现在正在为其中一个编写测试。我需要在不同的 View 和不同的模板之间传递一些信息,但这些信息不应该对用户可见。我的第一次尝试是将此信息作为 HTML 表单中的隐藏字段传递,但后来有人向我指出这并没有使它完全不可见。因此,我将此信息存储在 request.session 字典中,一切正常。

也就是说,我的问题是在测试时出现的。根据 django 文档(http://docs.djangoproject.com/en/1.2/topics/testing/),当你在测试期间必须修改 session 字典时,你应该首先将它存储在一个变量中,修改它,然后保存变量。

所以我的测试代码是这样的:

class Test_Atacar(TestCase):
fixtures = ["testBase.json"]

def test_attack_without_troops(self):
red_player = Player.objects.get(color=RED)
self.failUnless(red_player != None)
session = self.client.session
session["player_id"] = red_player.id
session.save()
response = self.client.get("/espectador/sadfxc/", follow=True)

但是当我运行 python manage.py 测试时,我得到一个 AttributeError,说 dict 没有属性 save()。我在其他地方 (http://code.djangoproject.com/ticket/11475) 读到我应该在操作 session 之前尝试对任何其他 URL 执行 self.client.get ,以便它成为一个“真正的” session ,但是我一直收到相同的 AttributeError。

最佳答案

当你在测试期间必须修改 session 字典时,你应该先将它存储在一个变量中,修改它,然后保存变量

这一行的意思是,如果你想对一些 session 变量做一些改变,不要直接把它们做成 session 。将数据存储在变量中,对该变量进行更改,然后将该变量放入 session 字典中。 session 就像任何其他字典。

关于django - 测试时在 Django 中使用 session 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4252133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com