转载请注明出处❤️
作者:测试蔡坨坨
原文链接:caituotuo.top/5d14f0d7.html
你好,我是测试蔡坨坨。
我们在做接口自动化测试的时候,一般会通过调用登录接口来获取cookies。
有时候,requests 返回的 cookies 会为空,原因是因为链接发生了 301/302 重定向跳转,而 cookies 是跟着第一个响应返回的,第二个响应没有返回 Set-Cookie header。所以直接读取 r.cookies 就是空的,但是在 session.cookies 中是有数据的。
这里提供两种解决方案。
方法1 关闭重定向
在请求参数中加入"allow_redirects": False
关闭重定向。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| def login(self): req = { "url": self.url + "/passport/login", "method": "post", "data": { "username": self.username, "password": self.password }, "allow_redirects": False } res = requests.request(**req) cookie_jar = res.cookies print(cookie_jar) cookie = requests.utils.dict_from_cookiejar(cookie_jar) print(cookie)
|
方法2 直接读 s.cookies
1 2 3 4 5 6 7 8 9 10 11 12 13
| def login(self): url = self.url + "/passport/login" data = { "username": self.username, "password": self.password } s = requests.Session() s.post(url=url, data=data) cookie_jar = s.cookies print(cookie_jar) cookies = requests.utils.dict_from_cookiejar(cookie_jar) s.cookies.clear() print(cookies)
|