2013-10-27 56 views
1

在阅读文档我来跨越两个相矛盾paragraphes,我无法真正理解测试Django应用程序的cookie,会话和状态

第一个说:

测试客户端是有状态的。如果响应返回一个cookie,那么该cookie将被存储在测试客户端中,并随后发送所有get()和post()请求。

没有遵循这些cookie的到期政策。如果您希望Cookie过期,请>手动删除它或创建一个新的客户端实例(这将实际删除所有Cookie)。

而其他:

每个测试用例在django.test.TestCase实例有权访问一个Django>测试客户机的一个实例。该客户端可以作为self.client访问。这个客户端是为每个测试重新创建的,因此您不必担心状态(如cookie)从一个测试转移到另一个测试。

简单地说,如果我是测试者登陆,我必须使用django.contrib.auth.logout() 每个login()后|| post('/login/',data)

还是每个测试用例登录| post | get都有自己的状态/ cookies/session数据?

这对我有点困惑。

+0

找到另一种方式,在客户端内() Client.logout() – AmOs

回答

2

两条语句做不是相互矛盾。

在一次测试中,您可以多次使用self.client。您可以登录,并且测试客户端中的cookie处理将“记住”您的会话,以供后续请求使用。

只有当测试完成后,该状态是否被清除。

你不需要注销,因为这是一个客户端状态存储在cookie中,并且当测试完成时该状态被清除。如果您想测试用户登录但会话已过期或类似情况后会发生什么,请仅使用.logout()

+0

如果我想在同一个测试函数中测试另一个用户,该怎么办? > a = c.login(user1,password) – AmOs

+0

然后,您将注销并使用相同的客户端对象重新登录。 * *客户端*访问注销链接。 –

+0

我将如何使用相同的客户端对象注销?通过清除客户端的cookies和会话属性? – AmOs

相关问题