本节开始之前 要纠正一个bug,这个bug算是作者挖的一个小坑,在graphql的实际发送请求的代码中,作者对variables的求值代码不小心写成了int,其实应该用eval,因为这一个错误后其他代码全是复制粘贴,所以导致首页/接口调试/用例执行 三处均存在这个bug,好在榜一大哥使用中发现并给予纠正。
所以我们要改动以下三处:
views.py中的Api_send_home函数:
views.py中的Api_send函数:
run_cases.py中的demo函数:
然后就正常了,欢迎大家持续反馈bug。
接口测试平台,有个比较重要的功能,就是登陆态接口设置。
那么什么是登录态,一般的app接口 是需要一个token字段来验证 此时的用户是否是登陆状态,登录的又是哪个账号。
如果这个token不对,那么后台就会给当前账号踢掉。
而这个token是客户端怎么获取到的呢?其实绝大部分都是从登陆接口获取的。
也就是说,带着用户名 密码 /验证码 的那个接口,它作为第一个接口,是很特殊的,它不像后续接口需要token,它是用来获取token的,然后这个token被客户端当作其他后续接口的请求体/header中 发送出去。
而token是会变的,每当登陆接口调用了一次,token都会变化一次。我们平时说 一个手机先登陆app,此时它用的是token1,然后另一个手机也登陆同样账号,它用的就是token2, 而后台的缓存/数据库中存储的该账号的token只有一个,所以token1就失效了,第一个手机的请求因为带着失效的token,就会被服务器返回某个错误码,然后客户端接收到这个错误码就会把用户踢出。
当然上面说的是绝大部分app,还有很多其他的各种操作。比如web端的cookie方式 来判断登陆状态等等。不过话说回来,这一切都是要靠第一个请求,登陆接口来搞定。
所以我们测试平台为什么要加入这个功能呢?
比如接口库中,需要测试某个查询好友列表的接口,结果你写完之后每次请求,返回结果都说:请先登陆!
然后你就要去手动在请求体中加入麻烦的token,甚至还有用户id 等等其他字段。然后再请求才能成功返回。但是这个token你去哪弄呢?你只能通过去请求登陆接口获取。所以相当于你要测试一个接口,就要手动先去调用登陆接口,然后复制返回值的token等字段,然后打开查询好友接口,把这几个字段粘贴进去,然后再请求。这个操作很麻烦。
所以我们要开发一个 自动加入登陆状态的 功能,在测试查询接口的时候,有个小开关,打开,那么本次请求,就会先去自动请求登陆接口,然后自动把返回值token加入到查询请求的请求体中,然后出现结果。
从用户的角度体验,几乎看不出什么额外的麻烦流程。
那么我们先来制定下要怎么做。
1.首先,这个登录态接口包含账户信息,我们就不能作为整个平台的公用的。只能放到项目内,因为项目内是个人建立的,后果可以自负。当然后续上了权限管理后,其他人就可以控制看不到自己项目内的内容了。
2.作为项目内的一项功能,那么它应该可以作用到接口库和用例库中。
3.它需要有自己独特的管理页面(弹层),其中包括调试,返回值提取设置,类型选择,客户端选择,预置默认文案等等。
首先我们看底部的按钮:登录按钮,(错别字请自行纠正,博主键盘经常手误打成登陆,大家见谅)
首先打开P_apis.html,下方找个地方写登陆态的div:
然后新建script 并内增一个展示函数function:
内容基本是照搬部分接口调试层的代码。
然后在登录态按钮和这个login_show函数结合起来:
到此,我们点击按钮 打开登陆态接口的设置层的链路就完成了。下一节我们要开发这个div内的具体各个元素了。