- 使用python写接口自动化,Http请求方式有OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法,本次主要对比post和get方法,两者请求body格式有差异,了解了一下大概区别和处理方式,如果分析有问题欢迎大家指正,首先post和get请求所使用有所不同:
- Http get 方法: 主要用于向指定的URL(URI)请求资源(资源文件或是数据均可), 可以带参数也可以不带参数, 带参数时,参数是明文传递,你可以在浏览器的地址栏中看到参数名及参数值,get安全性不高,所以常用于安全性要求低的场合, 比如登录后请求数据。
- Http post方法:主要是向指定的URL(URI)提交数据, 通常用于表单发送,POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中,像注册、登录、提交表单都是用该方法实现的。
- post请求content-type类型是:Content-Type:application/x-www-form-urlencoded对应的请求参数形式为Form Data:
- Reqeusts支持以form表单形式发送post请求,只需要将请求的参数构造成一个字典,然后传给requests.post()的data参数即可。
@request(url = config.TALARIS_URL + '/head/team/config/change_team',method='post',data_type='form')
def test_head_change_team(self,team_id):
"""
切换团队
"""
body = {
'team_id': team_id
}
-
post请求content-type类型是:Content-Type:application/json对应的请求参数形式为request payload:
-
Reqeusts支持以request payload形式发送post请求,application/json格式的请求头是指用来告诉服务端post过去的消息主体是序列化后的 JSON 字符串。使用python写接口自动化定义接口时需要使用json.dumps()将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错
@request(url = config.STARGATE_URL + '/head_api/process',data_type='form',method='post')
def test_head_process(self, dealRemark, headApplyId, reassignedTakerId, status, teamId, trackingId):
"""
申请异常流程
:param dealRemark:
:param headApplyId:
:param reassignedTakerId:
:param status:
:param teamId:
:param trackingId:
:return:
"""
params= {
'dealRemark': dealRemark,
'headApplyId': headApplyId,
'reassignedTakerId': reassignedTakerId,
'status': status,
'teamId': teamId,
'trackingId': trackingId
}
body = json.dumps(params)
-
get请求的时候对应的请求参数形式为Query String Parameters,我们的参数直接反映在url里面,形式为key1=value1&key2=value2形式;
例如:https://*****/taker_order_count?team_id=100 -
使用python写get请求,支持直接使用使用params关键字,以一个字典来传递这些参数,例如:
@request(url = config.TALARIS_URL + '/web/subgroup/update_status',method='get',data_type='form')
def test_group_status(self,groupId,status):
"""
更新分组状态
:param groupId:
:param status:
:return:
"""
params = {
'groupId': groupId,
'status': status
}