背景:
在用robot做接口自动化时,有一个查询接口需要用到登录后返回的token等信息作为cookies作为参数一起请求(token是在返回体中,并不在cookies中),
刚好create session关键字有cookies参数,但是传cookies参数时,会报错ValueError: need more than 1 value to unpack,耗费了很久没有解决
${login_cookies}= Create Dictionary token=ef2f3216-a63c-4a84-93e1-86984812963e memberNo=486497018462720Create Session ${alias} ${member_host} headers=${Content-Type} cookies=${login_cookies}
解决:
所以计划自己写方法,将cookies手动添加到post请求中
将cookies直接写成字典,或者使用cookies = dict(token='24337265-335f-4258-bb65-aa294ab05d28',memberNo='486497018462720')转为为字典
#coding:utf-8
importrequestsdefpost_cookies():'''发送带有cookies的post请求,
:return:'''
#cookies = dict(token='24337265-335f-4258-bb65-aa294ab05d28',memberNo='486497018462720')
cookies = {"token": "24337265-335f-4258-bb65-aa294ab05d28", "memberNo":"486497018462720"}
payload= {"memberNo": "486497018462720"}
r= requests.post("http://bnetweixin.yto56test.com/member/memberCoreApi/queryIdentityUserInfo", json=payload,cookies=cookies)printr.cookiesprintr.content
post_cookies()
测试:
payload参数如果是json格式的,一定要将payload传递给json参数,写成data=json.dumps(payload)或者data=payload都不能正常请求,如下图:
后续:
因为token等信息是上一个接口的返回体,所以需要将这个post_cookies方法改造一下,将token和memberNo作为形参