如何访问 Django TestCase 请求和响应中的 cookie?

问题描述 投票:0回答:2

我有一个使用

response.set_cookie
方法设置 cookie 的视图。我想测试 cookie 是否设置在
TestCase
中。

根据 docs,cookie 应该可以在客户端对象中访问,但是

client.cookies.items
返回一个空列表。浏览器中已正确设置 cookie。

测试用例:

>>> response = self.client.get(url)
>>> self.client.cookies.items()
[]

有什么想法吗?

django django-views setcookie testcase
2个回答
16
投票

您需要使用响应的客户端实例:

response = self.client.get(url)
response.client.cookies.items()

0
投票

response
Client
类的实例。您可以使用
response.cookies
,而不使用
client
:

response = self.client.get(f'/authors/{author.id}/')
print(response.cookies)
>>> Set-Cookie: user=154; expires=Tue, 17 Oct 2028 00:31:19 GMT; Max-Age=3600; Path=/

如果你想访问

user
值,语法如下:

response.cookies["user"].value
>>> 154

旁注:

  • response.cookies["user"]
    是一个 http.cookies.Morsel 对象,因此访问 cookie 本身的
    value
    与访问常规字典不同。
© www.soinside.com 2019 - 2024. All rights reserved.