当我们在使用Python的requests库做接口自动化时,我们都知道只要使用session = requests.session()
就会自动保存cookie
但当我在做公司的接口自动化项目时,发现保存的cookie不生效,通过请求登录接口后打印cookie,又发现有cookie,这里就是我比较头大了o(╥﹏╥)o
查找多方资料后,终于找到了原因,原来requests只能保持 cookiejar 类型的cookie,而我们手动构建的cookie是dict类型的。所以我们需要把dict转为 cookiejar类型,转换方式如下:
# 将CookieJar转为字典: cookies_dict = requests.utils.dict_from_cookiejar(resp.cookies) # 将字典转为CookieJar: cookies = requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True) # 其中cookie_dict是要转换字典 # 转换完之后就可以把它赋给cookies 并传入到session中了: session = requests.Session() session.cookies = cookies
实际使用时需要观察cookie格式,比如我们公司目前是将cookie以key-value的形式放在请求头中,所以我这里的处理方式是将cookie转为字典,然后将字典里的内容拼接为字符串。