1

在阅读文档时,我遇到了两个我无法真正理解的矛盾段落

第一个说:

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

不遵守这些 cookie 的过期政策。如果您希望 cookie 过期,>手动删除它或创建一个新的客户端实例(这将有效地删除所有 >cookie)。

而另一个:

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

简单地说,如果我要测试登录,我必须django.contrib.auth.logout() 在每个login()||之后使用吗?post('/login/',data)?

还是每个测试用例 login|post|get 都有自己的 state/cookies/session 数据?

这对我来说有点困惑。

4

1 回答 1

2

这两种说法并不相互矛盾。

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

只有当测试完成时,该状态才会被清除。

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

于 2013-10-27T10:09:04.830 回答