开发者社区> 游客pxprrm2iipsfu> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

接口测试平台代码实现120:cookie持久化-3

简介: 接口测试平台代码实现120:cookie持久化-3
+关注继续查看

   本节我们来把接口库普通接口调试功能中的登陆态接口的cookie保持对话功能完善。

   前端的话没有什么好改动的,我们直接把视线聚集到views.py中的函数:

Api_send

project_login_send_for_other


我们先来看 被调用的登陆态接口,这个函数之前是去发送请求,然后返回提取的字段,交给Api_send。

现在我们要增加一个判断,也就是如果提取设置=='cookie',那么就不是提取返回值字段来,而是要保持会话,根据前俩节的内容我们知道,如果要保持会话,那么我们的请求代码也要进行改变,之前是用requests.request,现在我们要声明一个a =  requests.session()  

然后登陆接口调用的是a.request方法,最终返回a,但是我们针对每种请求体类型都写了一个requests.request,所以虽然麻烦,但是目前逻辑上最简单的方法就是在不同的请求体类型中,都加入一个判断,虽然看起来比较low,但是系统执行起来的时候肯定只会走其中一个分支,所以运行并没有浪费效率的地方。

   先来试着改一下none类型的:

微信图片_20220703221612.png

我们把之前的请求代码放到了else里,新的if分支中判断了下返回体设置,然后声明了a,然后a进行请求登陆态接口,然后直接省略后面一切步骤,返回a即可。

之后我们依次改其他几种请求体类型:

微信图片_20220703221619.png微信图片_20220703221625.png微信图片_20220703221631.png微信图片_20220703221638.png

好了,到这为止,我们理论上搞定了登陆态接口被调用的方法。


接下来我们要考虑普通接口调用它的时候的情况了。

之前它会返回一个字典,里面包含提取的登陆态字段。但是现在如果是cookie持久化的话,那么返回的就是a,a是什么呢?我们不用关心,反正a不是字典就可以了。

    所以我们在接收的时候对登陆态返回的东西用类型判断一下,就知道是字典还是a了,若是a,那就是说明登陆态设置的是cookie持久化,那么普通接口的请求代码也要改,也要从requests.request改成a.request方法了。

    不过这里比较复杂,让我们先来回忆一下,普通接口调试函数中关于登陆态的旧逻辑吧:

    微信图片_20220703221644.png

首先判断是否需要登陆态,需要就去请求,不需要就变成空字典。

然后会依次插入到url,header,和各种body中。

这时,无论需不需要,login_res都是字典,所以我们在后面请求体请求中,可以直接放心的用循环遍历login_res.keys()

微信图片_20220703221650.png

但是我们现在增加了cookie相关,那么返回的就可能是a,那么我们后面的代码按现在的逻辑去遍历 直接就报错了。

所以我们需要判断login_res的类型看看是不是cookie持久化,若是,那么后面的所有具体不同的请求体类型的请求代码,直接全换即可。

    首先是改url插入:

微信图片_20220703221657.png

增加了if ,来判断login_res的类型,若是字典的情况,才会进行插入,否则就是cookie,不需要插入到url。


    然后是header:

微信图片_20220703221703.png

可以看到,只有当是dict字典时,才会进行插入header的操作。


然后是各种请求体:

首先是none:

微信图片_20220703221720.png

其实就是简单判断了下,如果是字典那么还是之前的requests.request,如果不是,那么就是cookie持久化,那么就用a.requests来请求,此时a就是login_res,login_res是调用登陆态接口函数返回的东西。


接下来是其他几种:

微信图片_20220703221725.png

注意,其中只有为字典时,才需要进行遍历插入请求体的代码,若不是,那么就直接用login_res请求就可以了。

微信图片_20220703221732.png微信图片_20220703221738.png微信图片_20220703221743.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
接口测试平台代码实现71: 多接口用例-11
好的因为群内大佬打赏的钱太多,所以履行承诺,加更一节: 本节主要处理掉,这个步骤保存的功能,其实对于跟到现在的同学来说,业务上的curd早就已经轻车熟路了。本节节奏稍快:
22 0
接口测试平台代码实现50: 自动异常测试-3
本节开始之前,先解决下关于调试层遗漏的一个设计缺陷。就是当已经打开了一个接口的调试层后,如果直接点击其他接口的调试层便会出现显示错误。这类的问题非常多,我们最好是直接根本上绕过去。
13 0
接口测试平台代码实现14:注册功能和后台管理
本节先说说我们上节课的弊端,就是我们在测试的时候,很难先测试登陆状态去访问/home/ 然后再测试非登陆状态去访问/home/这条用例。
20 0
接口测试平台代码实现80: 多接口用例-20
接口测试平台代码实现80: 多接口用例-20
14 0
接口测试平台代码实现109:登录态接口-5
我们本节来制作登陆态接口的请求js函数, 为什么要制作这个调试请求功能? 这个功能在正常使用中是不会用到的,这里只用来给调试用,也就是测试。
27 0
接口测试平台代码实现146: 平台主题-夏日清凉5
接口测试平台代码实现146: 平台主题-夏日清凉5
9 0
接口测试平台代码实现100:全局域名-7
本节作为全局域名的最后一节,也是代码实现的第100章。 我们本节就来实际去后台进行修改,让全局域名可以真实生效,目前我们接口库接口和用例库步骤,保存的host中,若是全局域名,前面四个字符一定是:“全局域名”
17 0
接口测试平台代码实现64: 多接口用例-4
上节我们成功的搞定了大用例的 增加/删除/复制功能 本节我们计划搞定设置大用例功能, 也就是: 点击设置按钮,左侧弹出小用例(接口) 列表+接口列表相关的数据层实现。
12 0
接口测试平台代码实现4:第一个页面
好了,咱书接上回,我们目前已经项目和app都创建好了。 现在我们用pycharm来打开这个项目,记住要选择到项目上(也就是ApiTest),层级别选错了,选对的话,pycharm是可以自动识别出来这是个django项目,给你安排好启动服务功能的哦~
24 0
接口测试平台代码实现94:全局域名-1
接口测试平台代码实现94:全局域名-1
10 0
+关注
游客pxprrm2iipsfu
我去热饭
435
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载