Издевательские куки с ответами

У меня есть фрагмент кода, который касается файлов 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'}
Другие вопросы по тегам