Python接口自动化测试遇到问题:误传str类型给request
一:request接口请求数据用str传参报错,请求响应报错
排查原因:查看服务器报错是Json解析报错。
1.1、如果直接入参,进行request请求的数据:
data请求值为:
reqData ={"description":"2323333"} print(type(reqData))
查看类型是:<class 'dict'>
request调用时函数参数会转换:data=json.dumps(data)
1.2、查询通过参数化后的类型,变成了<class 'str'>,所以导致出错了
把str转换成:dict入参
#str类型转换成dict类型 reqData =eval(data)此时再调用就不出错了。
response = requests.post(url, data=json.dumps(data), headers=header_all, verify=False)
Request的data需入参是json,用转换json.dumps(data)
参考:python request请求头格式代表要传入的数据格式、requests.post方法中的data和json的区别
二、Dict和JSON互换
JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。现在的接口请求request params和response body,大都是使用json格式的数据。
Python使用requests模块作接口请求,request params不能直接申明json格式,需先定义成dict字典数据,然后转换成json处理。
2.1、#Dict转换成JSON
#coding=utf-8
import jsonreqData = {"description":"2323333"}json_str = json.dumps(v)print(type(reqData))
print(type(json_str))
<class 'dict'>
<class 'str'>
2.2、#JSON转换成Dict
#json转换成dict
dictData = json.loads(json_str)
<class 'dict'>