1

我有一段代码处理服务器设置的 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",
              })

然后我希望这会返回我的cookie,但没有这样的运气。

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'

我如何模拟 cookie responses

4

1 回答 1

2

Ubuntu 16.04 中的python3-responses软件包已过期。您将需要使用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'}
于 2016-07-18T17:47:23.353 回答