首页 > 编程语言 > 详细

python简单进行post接口测试,接口参考Swagger

时间:2019-08-01 20:54:13      阅读:283      评论:0      收藏:0      [点我收藏+]

Swagger上面找一个post接口,如图。同样可以先在swagger上面try it out先验证下本接口效果

技术分享图片

经试验,参数如下,加上正确的token,可以正确查询到结果:

{
"id": 283,
"name": "",
"orderBy": 2,
"pageNo": 1,
"pageSize": 20,
"queryTotal": true,
"sortString": "id"
}

接下来,我们通过python来验证下该接口:

一开始是这样写的:

import requests
if __name__ == ‘__main__‘:
url = ‘http://XXX.XX/api/item/v1/attribute/search‘
attributeNamePageSearchModel = {
"id": 283,
"name": "",
"orderBy": 2,
"pageNo": 1,
"pageSize": 20,
"queryTotal": true,
"sortString": "id"
}
header={"Authorization": "f0fe02af-dca6-47e7-8f09-07c53d2bfc61"}
response=requests.post(url,data =attributeNamePageSearchModel,headers=header)
print(attributeNamePageSearchModel)
print(response.url)
print(response.text)
发现"queryTotal": true, 这一行的true有红色报错;尝试改成‘true‘和1,运行结果依然不对;在Swagger上面也改成‘true‘和1,相同报错;后经过搜索,知道python里面需要改成True才行
改成True之后运行,不是应该有的结果:

技术分享图片

那一定是我们参数不对,接着探索,发现需要加上Content-Type;于是修改header一行:

header={"Authorization": "f0fe02af-dca6-47e7-8f09-07c53d2bfc61","Content-Type":"application/json"}
再运行,发现还是上述无效请求。。em,继续看,是不是json格式的问题,于是试着转化下,header上面加一行,同时上面还需要import json:
#python数据类型转换为json类型(json.dumps())
attributeNamePageSearchModel = json.dumps(attributeNamePageSearchModel)
再运行,ok,是想要的结果:

技术分享图片

备注:上述有2条语句其实有2种写法,1或2都可以:

1.

attributeNamePageSearchModel = json.dumps(attributeNamePageSearchModel)
response=requests.post(url,data =attributeNamePageSearchModel,headers=header)
或者2.
response = requests.post(url, json=attributeNamePageSearchModel, headers=header)

总结:

1.json编码的格式几乎和python语法一致,略有不同的是:True会被映射为true,False会被映射为false,None会被映射为null,元组()会被映射为列表[];

所以想要在post请求中使用data关键字来传递json格式的字符串,首先得把dict转为string(用到json.dumps());

或者也可以直接使用json关键字直接传递,在传递时会自行进行编码为string类型(不需要json.dumps())

python简单进行post接口测试,接口参考Swagger

原文:https://www.cnblogs.com/hellomaster/p/11285159.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!