使用graphene-django GraphQTestCase测试Cookie触发AttributeError问题排查
问题原因及解决办法
核心问题
你混淆了**请求对象(WSGIRequest)和响应对象(HttpResponse)**的Cookie属性:
WSGIRequest(客户端发起的请求)用COOKIES(大写)属性获取客户端发送的CookieGraphQLTestCase.query()返回的是HttpResponse(服务端返回的响应),它存储要发给客户端的Cookie的属性是小写的cookies,而非大写的COOKIES——这是触发AttributeError的直接原因。
另外,response.cookies是Django的SimpleCookie实例,不是普通字典,获取值的方式也略有区别。
修改后的测试代码
class CookieTest(GraphQLTestCase): def test_set_cookie(self): response = self.query(...) # 返回的是HttpResponse对象 # 验证目标Cookie是否存在 self.assertIn('myCookie', response.cookies) # 获取Cookie的具体值 cookie_value = response.cookies['myCookie'].value self.assertIsNotNone(cookie_value)
额外验证(可选)
如果需要确认Cookie的HttpOnly属性是否生效,可以添加:
self.assertTrue(response.cookies['myCookie']['httponly'])
内容的提问来源于stack exchange,提问作者Viljami
相关产品推荐
相关产品推荐

