接口测试平台代码实现71: 多接口用例-11

简介: 好的因为群内大佬打赏的钱太多,所以履行承诺,加更一节:本节主要处理掉,这个步骤保存的功能,其实对于跟到现在的同学来说,业务上的curd早就已经轻车熟路了。本节节奏稍快:

首先是保存按钮加一个onclick 指向保存函数:

但是我们发现,其实早就写好了,保存和取消按钮都指向这个关闭的函数。

只不过保存按钮的话,会先发送一个请求去保存,然后再关闭,那我们就直接在这里开始写这个保存代码吧。

微信图片_20220625103400.png


其实大部分代码仍然是去接口库保存接口的js函数中复制粘贴,然后改改;微信图片_20220625103407.png


这段代码改动很大,所有的ts_都换成了step_ 而且api也换成了step。为避免出错。请直接复制下面代码:(若还有错误,我们之后发现再改~)

   function close_right_div(which) {
         if(which == "save"){
             // 这里写保存的脚本代码
             // 获取所有接口设置数据
                var name = document.getElementById('step_name').value ;
                var step_method = document.getElementById('step_method').value ;
                var step_url = document.getElementById('step_url').value ;
                var step_host = document.getElementById('step_host').value ;
                var step_header = document.getElementById('step_header').value ;
                var index = document.getElementById('step_index').value;
                // 判断顶部的数据是否填充完
                if(name == ''){alert('请输入接口名字!');return}
                if(step_method == 'null'){alert('请选择请求方式!');return}
                if(step_url == ''){alert('请输入url!');return}
                if(step_host == ''){alert('请输入host!');return}
                //判断关键数据是否符合规则
                if(step_host.slice(0,7) != 'http://' && step_host.slice(0,8) != 'https://'){
                    alert('host必须以http://或https://开头!');return
                }
                if(step_header != ''){
                    try {
                        JSON.parse(step_header)
                    }catch (e) {
                        alert('header请求头不符合json规范!');
                        return
                    }
                }
                var step_body_method = $('ul#myTab li[class="active"]')[0].innerText;
                if(step_body_method == 'none'){
                    var step_api_body = ''
                }
                if(step_body_method == 'form-data'){
                    var step_api_body = []; //新建这个空列表用来存放后续的数据
                    var tbody_ = $("table#mytable tbody")[0]; //获取该表格的内容部分
                    var trlist = tbody_.children ; //获取下面所有tr,每个tr就是一个键值对实际上
                    for(var i=0;i<trlist.length;i++) {
                        var tdarr = trlist[i].children; // 获取tr下的俩个td
                        var key = tdarr[0].innerText; // 获取key
                        var value = tdarr[1].innerText; // 获取value
                        step_api_body.push([key, value]);// 作为一个数组,存放到这个大数组里。
                    }
                    step_api_body = JSON.stringify(step_api_body);
                }
                if(step_body_method == 'x-www-form-urlencoded'){
                    var step_api_body = []; //新建这个空列表用来存放后续的数据
                    var tbody_ = $("table#mytable2 tbody")[0]; //获取该表格的内容部分
                    var trlist = tbody_.children ; //获取下面所有tr,每个tr就是一个键值对实际上
                    for(var i=0;i<trlist.length;i++) {
                        var tdarr = trlist[i].children; // 获取tr下的俩个td
                        var key = tdarr[0].innerText; // 获取key
                        var value = tdarr[1].innerText; // 获取value
                        step_api_body.push([key, value]);// 作为一个数组,存放到这个大数组里。
                    }
                    step_api_body = JSON.stringify(step_api_body);
                }
                if(step_body_method == 'Text'){
                    var step_api_body = document.getElementById('raw_Text').value;
                }
                if(step_body_method == 'JavaScript'){
                    var step_api_body = document.getElementById('raw_JavaScript').value;
                }
                if(step_body_method == 'Json'){
                    var step_api_body = document.getElementById('raw_Json').value;
                }
                if(step_body_method == 'Html'){
                    var step_api_body = document.getElementById('raw_Html').value;
                }
                if(step_body_method == 'Xml'){
                    var step_api_body = document.getElementById('raw_Xml').value;
                }
                var step_id = document.getElementById('step_id').innerText ; //获取到了接口id
                $.get('/save_step/',{
                    'step_id':step_id,
                    'name':name,
                    'index':index,
                    'step_method':step_method,
                    'step_url':step_url,
                    'step_host':step_host,
                    'step_header':step_header,
                    'step_body_method':step_body_method,
                    'step_api_body':step_api_body
                },function (ret) {
                })
         }
           $("#right_div").animate({left:'100%'},'fast');
           $("#right_div").css("display","none");
    }

好,现在让我们去写urls.py:

微信图片_20220625103413.png

最后是views.py:微信图片_20220625103419.png

# 保存小步骤
def save_step(request):
    step_id = request.GET['step_id']
    name = request.GET['name']
    index = request.GET['index']
    step_method = request.GET['step_method']
    step_url = request.GET['step_url']
    step_host = request.GET['step_host']
    step_header = request.GET['step_header']
    step_body_method = request.GET['step_body_method']
    step_api_body = request.GET['step_api_body']
    DB_step.objects.filter(id=step_id).update(name=name,
                                              index=index,
                                              api_method=step_method,
                                              api_url=step_url,
                                              api_host=step_host,
                                              api_header=step_header,
                                              api_body_method=step_body_method,
                                              api_body=step_api_body,
                                              )
    return HttpResponse('')

好的,让我们重启服务,刷新页面。测试一下:


这是我们的前端写的一个步骤数据:

微信图片_20220625103425.png

然后我们点击保存按钮。

并没有任何报错。

然后我们再点开这个步骤,看看数据能否展示出来:

微信图片_20220625103431.png

发现大部分都没问题,但是这个请求体类型和请求体 还是没有成功。跟我一起排错吧~


这种情况,肯定是数据流出现了差错,所以我们去排查一下数据流的问题。我们先进入后台,看看这个步骤的请求体类型请求体 俩个字段是否保存成功了。

微信图片_20220625103436.png

发现很明显,保存成功了。


然后再看看console.log,前端页面是否也成功拿到了:

微信图片_20220625103444.png

发现前端页面也拿到了数据


那么就是说,问题出在了 加载显示到 页面上的函数中。

微信图片_20220625103451.png

注意我们上面的这个展示的函数中。肯定是有问题的。


问题就是:我们获取到的步骤中 请求体类型是 api_body_method,但是js函数中却用ret.body_method来获取,所以当然获取不到:

微信图片_20220625103457.png微信图片_20220625103505.png

所以我们先改好:

微信图片_20220625103510.png

然后再刷新页面测试下:

微信图片_20220625103516.png

好了。今天再处理一个 体验上的问题:

就是当我们点击保存步骤成功后。左侧的步骤列表并没有刷新,如果改了名字或者排序,那么也看不出来。

比如微信图片_20220625103523.png

都改成22了,但是点击保存后,左侧因为没有刷新,依然还是:

微信图片_20220625103529.png

所以我们在保存成功的函数返回动作中,加上刷新左侧div的那个js:

微信图片_20220625103535.png

加完后,刷新页面试试:

发现已经可以直接刷新左侧步骤列表了~


好今天的内容就到这了。欢迎持续关注和扩散。

相关文章
|
1月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
4天前
|
人工智能 自然语言处理 测试技术
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
Potpie.ai 是一个基于 AI 技术的开源平台,能够为代码库创建定制化的工程代理,自动化代码分析、测试和开发任务。
105 19
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
|
8天前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
61 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
6天前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
32 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
27天前
|
前端开发 JavaScript 测试技术
使用ChatGPT生成登录产品代码的测试用例和测试脚本
使用ChatGPT生成登录产品代码的测试用例和测试脚本
84 35
|
27天前
|
JavaScript 前端开发 Java
使用ChatGPT生成关于登录产品代码的单元测试代码
使用ChatGPT生成关于登录产品代码的单元测试代码
42 16
|
1月前
|
存储 测试技术 数据库
接口测试工具攻略:轻松掌握测试技巧
在互联网快速发展的今天,软件系统的复杂性不断增加,接口测试工具成为确保系统稳定性的关键。它如同“翻译官”,模拟请求、解析响应、验证结果、测试性能并支持自动化测试,确保不同系统间信息传递的准确性和完整性。通过Apifox等工具,设计和执行测试用例更加便捷高效。接口测试是保障系统稳定运行的第一道防线。
|
1月前
|
Web App开发 JSON 测试技术
API测试工具集合:让接口测试更简单高效
在当今软件开发领域,接口测试工具如Postman、Apifox、Swagger等成为确保API正确性、性能和可靠性的关键。Postman全球闻名但高级功能需付费,Apifox则集成了API文档、调试、Mock与自动化测试,简化工作流并提高团队协作效率,特别适合国内用户。Swagger自动生成文档,YApi开源但功能逐渐落后,Insomnia界面简洁却缺乏团队协作支持,Paw仅限Mac系统。综合来看,Apifox是国内用户的理想选择,提供中文界面和免费高效的功能。
|
2月前
|
算法 Java 测试技术
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
66 13
|
2月前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
135 11

热门文章

最新文章