使用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 userLogin
def modifyCourse(mess,token):
# 将字典转化为字符串格式,提示参数格式不对
# payload = json.dumps(mess)
# 以字典格式传入,报错
# 因为id会变化,不能写死
id=mess['id']
#将内嵌套的字典转化为字符串,用参数接收
cour_data = json.dumps(mess['newdata'])
# 构造请求的data
payload = {"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__':
# 获取token
token = userLogin({"username":"XXX","password":"XXX"},True)
# 用例里面的请求参数,方便后面pytest框架循环,最好不动格式
datas = {"action":"modify_course","id":11,"newdata":{ "name":"吧唧吧唧","desc":"梁爸爸","display_idx":"5"}}
print(modifyCourse(datas,token[1]))
如果有更好的方法的话,欢迎大佬留言~~