lea*_*rco 5 testing django session request
我创建了一个包含三个应用程序的小型 django 项目,现在我正在为其中一个编写测试。我需要在不同的视图和不同的模板之间传递一些信息,但这些信息不应该对用户可见。我的第一次尝试是将此信息作为 HTML 表单中的隐藏字段传递,但后来有人指出,这并没有使它完全不可见。所以,我将这些信息存储在 request.session 字典中,一切顺利。
也就是说,我的问题是在测试时出现的。根据django文档(http://docs.djangoproject.com/en/1.2/topics/testing/),当你在测试期间必须修改会话字典时,你应该首先将它存储在一个变量中,修改它,然后保存变量。
所以我的测试代码是这样的:
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)
Run Code Online (Sandbox Code Playgroud)
但是当我运行 python manage.py 测试时,我得到一个 AttributeError,说 dict 没有属性 save()。我在其他地方(http://code.djangoproject.com/ticket/11475)读到,我应该在操作会话之前尝试对任何其他 URL 执行 self.client.get,以便它成为“真实”会话,但是我一直收到相同的 AttributeError。
当您在测试期间必须修改会话字典时,您应该首先将其存储在变量中,修改它,然后保存变量
这行意味着如果您想对某些会话变量进行一些更改,请不要将它们直接放入会话中。将数据存储在变量中,在该变量中进行更改,然后将该变量放入会话字典中。会话就像任何其他字典一样。
| 归档时间: |
|
| 查看次数: |
1048 次 |
| 最近记录: |