前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口测试平台代码实现137: 小bug集中修复

接口测试平台代码实现137: 小bug集中修复

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

有bug反馈证明 有人在用,在学。这点很好。当然随着 难度不断的提升,一些bug也并不是我故意埋的了。感谢反馈的小伙伴等人!

bug1: 新建项目 ,打开登陆态接口,看到的场景很诡异:

如图,如果你想知道为什么这么诡异,现在,就带你研究!

这个问题的罪魁祸手是 views.py中的这个函数:

当项目并没有设置 登陆态的时候,就返回了个空字典。这样前端的js自然找不到里面的内容,从而展示空白/undefined等。

所以修复这个问题也简单,我们给这个空字典改成一个有各个必要字段的字典就好了:

代码语言:javascript
复制
# 获取项目登陆态
def project_get_login(request):
    project_id = request.GET['project_id']
    try:
        login = DB_login.objects.filter(project_id=project_id).values()[0]
    except:
        login = {"project_id":project_id,"api_method":"none","api_url":"","api_header":"{}","api_host":"","body_method":"none",
                 "api_body":""}
    return HttpResponse(json.dumps(login),content_type='application/json')

然后我们刷新页面再打开就可以看到如下正常效果了:

bug2 :新项目的登陆态接口保存失败!

这个问题的诱发原因就是,新项目并没有在数据库中的登陆态。而代码中又仅仅是保存。所以这里我们要用到一个orm方法:更新或新建 upate_or_create

意思就是 如果存在就更新,不存在就创建。

这个update_or_create的用法如下:

数据表.object.update_or_create( 更新用的字典,查询的字段 )

其中查询字段可以是多个

代码语言:javascript
复制
# 保存登陆态接口
def project_login_save(request):
    # 提取所有数据
    project_id = request.GET['project_id']
    login_method = request.GET['login_method']
    login_url = request.GET['login_url']
    login_host = request.GET['login_host']
    login_header = request.GET['login_header']
    login_body_method = request.GET['login_body_method']
    login_api_body = request.GET['login_api_body']
    login_response_set = request.GET['login_response_set']
    # 保存数据
    DB_login.objects.update_or_create(
        defaults={
            "api_method": login_method,
            "api_url": login_url,
            "api_header": login_header,
            "api_host": login_host,
            "body_method": login_body_method,
            "api_body": login_api_body,
            "set": login_response_set,
            } ,
        project_id = project_id
    )
    # 返回
    return HttpResponse('success')

经过测试,这样就搞定了!!!

bug3: 登陆态项目请求报错!

最简单的请求 某度:

这个问题引起的原因是 调试登陆态接口时,这句代码引起的:

当时我们设计的时候,只设计了返回值是json的情况。当请求返回体非这个的时候,自然引发了这句报错。但是我们暂时并没有打算去用正则等方式去提取非json格式的返回体 关键字段。所以这里我们临时 给try掉。以后优化的时候我们再回来 增加其他格式的设置吧~

再看看结果显示:

好,这里我们顺手再解决这个中间是undefined的问题:

原来是我们之前漏掉了set字段:

加上 就好了,然后新项目就不会出现这个问题了。老项目我们手动改下即可。

好了,本期改的bug很多了。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档