在阅读文档时,我遇到了两个与我无法理解的矛盾相矛盾的
第一个说:
测试客户端是有状态的。如果响应返回一个cookie,那么该cookie将被存储在测试客户端中,并与所有后续的get()和post()请求一起发送。
不遵循这些Cookie的过期策略。如果您希望Cookie过期,请>手动删除它或创建新的客户端实例(这将有效删除所有> Cookie)。
而另一个:
django.test.TestCase实例中的每个测试用例都可以访问Django>测试客户端的实例。此客户端可以作为self.client访问。此客户端会为>每次测试重新创建,因此您不必担心将状态(例如Cookie)从一个测试转移到另一个测试。
简单地说,如果我要测试登录,我是否必须使用django.contrib.auth.logout()
在每个login()
||之后post('/login/',data)
?
或者每个测试用例login | post | get是否拥有自己的状态/ cookie /会话数据?
对我来说有点混乱。
答案 0 :(得分:2)
这两个陈述不相互矛盾。
在一次测试中,您可以多次使用self.client
。您可以登录,测试客户端中的cookie处理将“记住”您的会话,以便后续请求。
只有在测试完成后,该状态才会被清除。
您不需要注销,因为这是一个存储有Cookie的客户端状态,并且在测试完成后该状态将被清除。如果您想测试用户登录但会话已过期或类似情况后发生的情况,请仅使用.logout()
。