pytest+requests框架写接口自动化对 post 和 get 方法请求 body的 处理

  • 使用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
    }
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值