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

接口测试平台代码实现115:登录态接口-11

简介: 我们上节课,在具体的步骤设置页面的html里增加里登陆态的开关。成功的把保存展示初始化js函数搞定了。本节就来开始把实际运行时候的登陆态功能搞定。
+关注继续查看

 首先我们找到实际运行时候的run_case.py,还记得么,我们的run_case.py才是实际用例运行的脚本,用例是根据一个unittest类动态生成代码来运行的。

    在这里我们可以提取到步骤接口的一切数据,当然也包括登陆态的开关,但是这里我们要开始进行思考实现方案:

    1. 我们可以在demo函数中直接调用views.py中的登陆态调用函数,只需要传入对应的项目id即可得到需要的登陆态字段

    2.我们要进行判断,本次用例是否已经调用过,且最多只调用一次。所以需要进行控制,并且要把登陆态字段想办法变成我们之前提取返回值时候的字段一样,变成可随时调用的公共变量。

    3. 然后仿照接口库普通接口插入登陆态变量得到方式 进行插入到url,header,请求体中。

    设计完毕,开始实现:

登陆态的调用脚本,因为要受控制,所以变量要在setupclass中:

微信图片_20220703214943.png

login_res默认为空字符串,当下面demo开始调用这个login_res时候进行判断,若空字符串,则发起调用实际请求,否则证明已生成,则会直接使用。


所以在demo中的真实发送请求前加入这么一段:(大家先不用去写,这里是错误代码,后面会讲到)

微信图片_20220703214957.png

 这里我们先判断是否需要加入登陆态,如果是,那么再判断登陆态当前是否为空,若为空则说明还未调用过,则进行首次调用,并替换值。判断完毕后,开始进行代入过程。

为此逻辑,我进行了简单测试,输出了俩个地方。

    测试结果:

微信图片_20220703215003.png

在测试结果中,我们能明显看到,俩个步骤都成功打印了得到的登陆态字段,但是字段并不相同,通过我们的调用文案,也可以看出,俩个步骤都进行了实际调用,这是一种极大的浪费行为,甚至会导致被服务器当作恶意登陆封号。

   所以测试结果可以看出,我们的计划失败了,第一个步骤调用后,以为把字段成功放到了类变量中,但是第二个步骤调用的时候发现,类变量依然为空字符串,也就是说我们第一次的覆盖值的操作失败了,那么为什么会引起这个原因呢?其实道理很简单,我们在之前的章节中就讲过了,unittest的类变量不可在多个具体def函数中进行共用,在之前我们对返回值提取的功能实现时就遇到了这个问题,那么当时的解决办法是,运用了公共全局global的方式解决。所以这里我们要进行下列更改,首先删除掉没用的setupclass函数!

微信图片_20220703215008.png

    然后demo函数登陆态部分进行如下修改:先判断是否存在,若存在则拉到,不存在则先请求。最后输出,在finall就是直接下一阶段插入代码了。微信图片_20220703215013.png

代码之后会给出可复制版本

测试结果如下:

image.png

再来看结果可以发现,这次第一个步骤说未调用过,然后进行实际请求得到的结果,第二个步骤说已调用过,然后直接输出的结果,俩次登陆态字段值一样,证明我们的设计成功了。

# 登陆态代码:
api_login = step.api_login  # 获取登陆开关
if api_login == 'yes':  # 需要判断
    try:
        eval("login_res")
        print('已调用过')
    except:
        print('未调用过')
        from MyApp.views import project_login_send_for_other
        project_id = DB_cases.objects.filter(id=DB_step.objects.filter(id=step.id)[0].Case_id)[0].project_id
        global login_res
        login_res = project_login_send_for_other(project_id)
    print(login_res)
    #开始插入代码url/header/body
else:
    pass

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

相关文章
接口测试平台代码实现110:登录态接口-6
我们上节课,前端已经成功拿到了 登陆态接口调试发送的运行结果,也就是返回值 和 提取结果。 如果确认提取结果没问题,我们就切换到请求体tab然后点击保存按钮。就成功保存了。
11 0
接口测试平台代码实现71: 多接口用例-11
好的因为群内大佬打赏的钱太多,所以履行承诺,加更一节: 本节主要处理掉,这个步骤保存的功能,其实对于跟到现在的同学来说,业务上的curd早就已经轻车熟路了。本节节奏稍快:
22 0
接口测试平台代码实现113:登录态接口-9
接口测试平台代码实现113:登录态接口-9
30 0
接口测试平台代码实现131: 全局变量-10
本节开始要进入比较烧脑的阶段了,请系好安全带,中途跳车的请刷卡。
9 0
接口测试平台代码实现132: 全局变量-11
我们今天要继续处理这个漫长的全局变量功能。 打开我的接口测试平台,然后开始回忆已经开发到哪了....
13 0
接口测试平台代码实现134: 全局变量-13
假期结束,回来继续学习这个全局变量吧。 山风不断,春雨绵绵,终有尽。 接口平台,全局变量,总不绝。 不过一切都要结束了,这个全局变量章节的最后时刻也要来临了。 在上节课中,我们成功的搞定了 在调试层请求体插入 变量。其实这已经证明一切都是可行的了。我们剩下的就是照葫芦画瓢,把什么登陆态,多用例,异常等 都插入全局变量即可完成本章节。
10 0
接口测试平台代码实现84: 多接口用例-24
接口测试平台代码实现84: 多接口用例-24
13 0
接口测试平台代码实现80: 多接口用例-20
接口测试平台代码实现80: 多接口用例-20
14 0
接口测试平台代码实现95:全局域名-2
接口测试平台代码实现95:全局域名-2
12 0
接口测试平台代码实现65: 多接口用例-5
接口测试平台代码实现65: 多接口用例-5
13 0
+关注
游客pxprrm2iipsfu
我去热饭
435
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载