如何正确单元测试Django会话?

时间:2010-03-31 02:30:51

标签: python django unit-testing session django-sessions

Django会话的行为在“标准”视图代码和测试代码之间发生变化,因此不清楚如何为会话编写测试代码。谷歌搜索这个问题产生了两个相关的讨论:

  1. Easier manipulation of sessions by test client

  2. test.Client.session.save() raises error for anonymous users

  3. 我很困惑,因为这两张票都有不同的处理方法,而且它们都被接受了。我认为这意味着它们已被修补,现在行为不同了。我也不知道这些补丁属于哪个版本。

    如果我在Django 1.0中编写单元测试,我如何设置会话存储以使会话像在浏览器中一样工作?

1 个答案:

答案 0 :(得分:1)

我不太明白你说“标准”视图和“测试”代码之间的行为改变是什么意思,也许你应该详细说明。

但关于如何测试会话,我认为有方法。

  1. 您必须了解django会话的工作原理,阅读您在应用程序中使用的会话包的单元测试。这是关于理解服务器端如何工作的。
  2. 您可能需要在浏览器和服务器之间捕获一些对话(例如使用FIREBUG)
  3. 因此,当您与服务器通信时,如果您在登录服务器时没有传递session_id,那么您遇到的问题就是这样。喜欢把它放进去(POST,GET,COOKIES我不太记得)。

    这里重要的是理解会话如何在HTTP中工作,一旦你得到它,你肯定对那里发生的事情有一个清晰的认识,并相应地进行解释。