【问题标题】:Mocking cookies with responses用响应模拟 cookie
【发布时间】:2016-07-18 17:29:50
【问题描述】:

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

如何使用 responses 模拟 cookie?

【问题讨论】:

  • 我看到这实际上是在响应中测试的 (#),所以我的库版本可能已经过时了......

标签: python-requests python-responses


【解决方案1】:

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'}

【讨论】:

  • 我已经直接从 stackoverflow.com 提取了 set-cookie 标头的内容...
猜你喜欢
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
相关资源
最近更新 更多