[Win+Python]使用python接口测试时302重定向的两种处理方法

前言

我将在本文中简单介绍使用python进行接口测试时,遇到302重定向时的一些测试心得。

本文涉及实例中的一些关键信息不便透漏,已作遮挡处理,不影响整体。

1 接口简介

首先,我们通过Fiddler抓包工具来分析一下请求的完整过程。
Fiddler
#1 GET请求,请求结果200。发起GET请求,返回下一步请求所需的data(以A和B代指)以及cookies(SESSION);(这里遇到过一个坑,就是在代码中发起请求后并未获取返回的cookies,在下一步请求的时候即使提交了表单数据也一直被当做新的请求,会返回新的参数A/B)

GET请求的返回header和RAW
cookies

data-A_B
#41 POST请求,返回结果302。通过POST请求提交表单数据(包含用户名、密码、验证码、上一步获取的随机参数以及一些固定参数),返回重定向地址Location;(这里也有一个坑,我们抓包后在RAW查看到data中的密码是经过转义后的,如果直接在代码中使用就会报错,因此我们需要在WebForms中去查看原始的密码)

POST请求头
POST_302
POST请求的返回结果
POST_Result

#42 GET请求,返回结果302。向上一步的Location地址发起GET请求,获得登录cookies以及登录后的页面地址Location;
GET请求
GET
GET请求的结果
GET_Result
#43 GET请求,返回结果200。最后一次GET请求,登录成功,不再截图演示。

2 代码实现

2.1 自动重定向

首先来看一下完整代码:
Code_Auto
使用自动重定向的时候非常简单,只需要默认使用requests库的get和post即可。

line12-19:分别定义get_request和post_request两个函数执行Get和POST请求,get时只需使用url即可,而post需要url,data以及cookies发起请求。

接下来看主函数:
line26:通过get_request函数发起请求,将返回结果保存在get_result中;
line27-28:通过re模块使用正则表达式从get_result中提取参数A和B(因为re匹配后返回的是list,所以加上[0]表示取第一个结果);
line29:使用requests自带的函数*.cookies.get_dict()即可获取返回结果中的cookies并以字典类型保存;
line33:拼接下一步POST所需的data;
line42:通过post_request函数发起post请求即可,requests库会自动处理后续的重定向过程。

2.2 跟随重定向

有的接口需要登录后才可进行测试时,我们通常会保存登录时的cookies带入后续接口的请求中。但当登录使用了302重定向时,使用自动重定向的方法我们无法获取登录的cookies,这个时候跟随重定向的意义就体现出来了。下面我们来看一下完整的代码:
Code_Follow
引用的库一样,依旧是requestsre

line11-18:get_request函数新增了cookies和allow_redirects参数,post_request函数新增了allow_redirects参数。跟随重定向的关键就在于allow_redirects参数,设置为False的时候则是跟随重定向,默认情况下为True;
line45:使用*.headers['Location']获取post请求后返回的重定向地址;
line50:使用获取的重定向地址发起GET请求;
line53:获取登录页面的重定向地址;
line54:获取登录的cookies;
line58:通过GET请求登录成功。

至此,两种302重定向的测试方法介绍完毕。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值