如何正确地对Django会话进行单元测试?
Django的会话(sessions)在正常的视图代码和测试代码中表现得不一样,这让人搞不清楚怎么为会话写测试代码。网上搜索这个问题,找到了两个相关的讨论:
我有点困惑,因为这两个讨论的处理方式不一样,但它们都是被接受的。我猜这意味着它们已经被修复,行为现在有所不同。不过,我也不知道这些修复适用于哪个版本。
如果我在写Django 1.0的单元测试,我该怎么设置我的会话存储,让会话像在浏览器中那样工作呢?
1 个回答
1
我不太明白你说的“标准”视图和“测试”代码之间的行为变化是什么意思,也许你可以详细解释一下。
不过关于如何测试会话,我觉得有一些方法。
- 你需要了解Django的会话是怎么工作的,可以看看你在应用中使用的会话包的单元测试。这是关于理解服务器端是如何运作的。
- 你可能需要抓取一下浏览器和服务器之间的几次对话(比如使用FIREBUG)。
所以对你来说,问题看起来是你没有把登录时获得的session_id传回服务器,当你和服务器交流时。就像把它放在(POST、GET、COOKIES,我记不太清楚了)。
这里重要的是要理解HTTP中的会话是如何工作的,一旦你明白了,你就能清楚地知道发生了什么,并相应地进行解释。