requests请求参数data为字典嵌套字典格式时的解决方法
使用requests第三方库的put方法时,发现将参数由字典转化为字符串格式payload = json.dumps(mess),提示参数格式不对; 以字典格式传入时报错。
查看了传入的参数,格式为字典嵌套字典格式
解决方法为:将嵌套的字典用一个参数cour_data保存,然后写组合data的时候将dict转化为字符串(json.dumps(cour_data)),就可以成功发送请求了
# modify_course
# 2021/4/2
from config.Config import HOST
import requests,json
from lib.login import userLogindef modifyCourse(mess,token):# 将字典转化为字符串格式,提示参数格式不对# payload = json.dumps(mess)# 以字典格式传入,报错# 因为id会变化,不能写死id=mess['id']#将内嵌套的字典转化为字符串,用参数接收cour_data = json.dumps(mess['newdata'])# 构造请求的datapayload = {"action":"modify_course","id":f'{id}',"newdata":f'{cour_data}'}# 请求头head={"Cookie":f"sessionid={token}","Content-Type": "application/x-www-form-urlencoded"}res = requests.put(f'{HOST}/XXX/XXX/XXX',data=payload,headers=head)# 返回json格式的实际请求结果return res.json()if __name__ == '__main__':# 获取tokentoken = userLogin({"username":"XXX","password":"XXX"},True)# 用例里面的请求参数,方便后面pytest框架循环,最好不动格式datas = {"action":"modify_course","id":11,"newdata":{ "name":"吧唧吧唧","desc":"梁爸爸","display_idx":"5"}}print(modifyCourse(datas,token[1]))
如果有更好的方法的话,欢迎大佬留言~~
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
