前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口测试平台代码实现138: 关于大用例登陆态干扰bug

接口测试平台代码实现138: 关于大用例登陆态干扰bug

作者头像
我去热饭
发布2022-05-19 10:08:03
2410
发布2022-05-19 10:08:03
举报
文章被收录于专栏:测试开发干货

昨天有小伙伴反馈说 他发现了一个bug, 就是当俩个项目 不同大用例 运行时,登陆态干扰问题。 按照他的描述,应该是如下场景触发的:

项目A - 有登陆态接口A (此登陆态接口返回一个字段A)- 大用例接口A (此接口需要加登陆态返回的字段A)

执行后,发现可以加入字段A

然后去继续执行:

项目B - 有登陆态接口B (此登陆态接口返回一个字段B) -大用例接口B (此接口需要加登陆态返回的字段B)

结果他说问题出现了,就是 接口B加入的字段是 项目A的 登陆态接口返回的字段A。

他怀疑是run_cases.py中的这段代码引发的:

这段代码的意思是 当发现接口需要使用登陆态变量的时候,先去检查是否已经存在 登陆态变量(login_res) ,如果已存在 则直接用,否则就重新调用登陆态接口去获取。

这里的login_res 正常来说只有当之前接口触发过登陆态,才会生成这个登陆态字典变量。

这个bug的关键就在于,项目A先执行,生成了login_res, 然后项目B再执行,发现已经存在了login_res后就不再继续请求了。

我们现在先来用实际的demo来测试一下,看看能否复现吧~

一:先创建项目A/B

然后分别新建登陆态接口 A/B 。

注意,为了更好的做测试,我决定不再到处找别的接口了,就我们自己的平台我们新建四个接口用来测试,并且新建一个专门存放测试接口的views_test.py

然后去urls.py中导入:

然后增加四个测试用接口,俩个登陆态,俩个普通接口:

代码语言:javascript
复制
    # ------------ 测试用接口
    url(r'^test_login_A/$', test_login_A),  # 保存一个全局变量组
    url(r'^test_login_B/$', test_login_B),  # 保存一个全局变量组
    url(r'^test_api_A/$', test_api_A),  # 保存一个全局变量组
    url(r'^test_api_B/$', test_api_B),  # 保存一个全局变量组

然后去views_test.py中新建这四个函数:

到此 我们之后调试的时候,举例子比如只要访问的是 http://127.0.0.1:8000/test_api_A/。那么就会返回 函数test_api_A的内部res字典了。想怎么测怎么测。

所以现在我要给这四个接口添加内容:

两个登陆态接口,就userid吧:

俩个普通接口就 更简单了:

临时这样设置,后续需要我们随时改即可。

然后我们去设置项目A和B的登陆态和普通接口吧~

先来项目A的:

然后设置好提取后,保存。然后再Send

然后是项目A的普通接口:

从图中可看到,加了登陆态后仍然可以请求成功。

然后是项目B:

别忘了切换回none后保存。

调试成功后别忘了保存。

好!接下来,我们给俩个项目都增加 大用例,虽然大用例只有一个普通接口组成。

这里我们顺手删除之前写的 没用的 :新增登陆态接口按钮。

项目A用例:

项目B用例:

好了。现在我们都设置好了。也都添加了登陆态。

篇幅有限,本章到此为止,下一节我们开始正式来测试这个bug。

不要以为测试很简单哦。我们首先要制定测试方案。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发干货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档