Издевательские куки с ответами
У меня есть фрагмент кода, который касается файлов cookie, устанавливаемых сервером в ответ на HTTP-ответ. Я пытаюсь проверить это с помощью responses
, вот так:
responses.add(responses.GET, "http://invalid/cookies",
adding_headers = {
"Set-Cookie": "foo=bar; " +
"domain=.invalid; " +
"expires=Fri, 01-Jan-2055 00:00:00 GMT; " +
"path=/; " +
"HttpOnly",
})
Я бы тогда ожидал, что это вернет мне печенье, но не повезло.
session = requests.Session()
session.get('http://invalid/cookies')
session.cookies['foo'] # KeyError
Действительно, это работает вне контекста responses.activate
:
session = requests.Session()
session.get('https://httpbin.org/cookies/set?foo=bar')
session.cookies['foo'] # 'bar'
Как я могу издеваться над куки с responses
?
1 ответ
python3-responses
пакет в Ubuntu 16.04 устарел. Вам нужно будет использовать более новую версию с pip
/pip3
после чего это поведение работает как положено.
Заметьте, однако, что это тоже глючит на момент написания:
responses.add(responses.GET, 'http://invalid/cookies',
adding_headers = {
"set-cookie": "foo=bar; " +
"domain=.invalid; " +
# "expires=Fri, 01-Jan-2055 00:00:00 GMT; " +
"path=/; " +
"" # "HttpOnly",
})
session = requests.Session()
session.get('http://invalid/cookies')
dict(response.cookies) # this should have one cookie
{'foo': 'bar', 'path': '/', 'domain': '.invalid'}