接口测试平台代码实现87: 全局请求头-2

简介: 书接上回,我们已经在数据库中手动创建了俩个公共请求头。所以本节的主要任务是要让这俩个请求头显示在前端上。

首先我们找到进入接口库的后端views.py中的控制数据的函数:child_json。给它添加上请求头的数据。微信图片_20220625143736.png

  然后打开P_apis.html,找到我们相应的请求头设置代码:微信图片_20220625143743.png

我们接下来要在里面先写个for循环来显示出这俩个请求头:微信图片_20220625143751.png

 <div id="header_plan">
      {% for i in project_header %}
          <input type="text" value="{{ i.name }}" style="width: 20%;margin-top: 3px" placeholder="请求头name"> = {"
          <input type="text" value="{{ i.key }}" style="width: 15%" placeholder="请求头key"> " : "
          <input type="text" value="{{ i.value }}" style="width: 50%" placeholder="请求头value"> "}
          <br>
      {% endfor %}
  </div>

看看效果:微信图片_20220625143757.png

显示功能我们已经搞定了。然后是 新增。我们就创建一个新增按钮。微信图片_20220625143805.png

它的onclick直接写好。然后我们去创建这个新增js函数:微信图片_20220625143811.png

function add_project_header() {
    var header_plan = document.getElementById('header_plan');
    var i1 = document.createElement('input');
    i1.style='width: 20%;margin-top: 3px';
    i1.placeholder='请求头name';
    var i2 = document.createElement('input');
    i2.style='width: 15%';
    i2.placeholder='请求头key';
    var i3 = document.createElement('input');
    i3.style='width: 50%';
    i3.placeholder='请求头value';
    header_plan.appendChild(i1);
    header_plan.appendChild(document.createTextNode(' = {" '));
    header_plan.appendChild(i2);
    header_plan.appendChild(document.createTextNode(' " : " '));
    header_plan.appendChild(i3);
    header_plan.appendChild(document.createTextNode(' "}'));
    header_plan.appendChild(document.createElement("br"));
}

所用知识全是已经学过的。看看效果:微信图片_20220625143817.png

注意这里的新增功能,只是用js在前端 增加了空input框,并没有真实的去修改数据库,一刷新就没了。


接下来我们做保存功能:

保存功能我们就遍历所有这个输入框,然后成为数组传递给后端。如果name是空的,那么直接抛弃掉后面的key-value,当做删除功能了。

   但是我们要靠什么东西一下获取到所有的input框呢?很显然,是name,name属性可以重复,我们可以用getElementsByname方法直接获取到所有。

但是目前我们的这些input并没有name,所以我们要先加上name属性。

微信图片_20220625143825.png微信图片_20220625143832.png

之后我们在js方法中会有一个按照name数量进行的大循环,每次循环一行3个input,判断如果第一个input也就是name不为空,那么就添加到我们最终要发送给后端的数据中。微信图片_20220625143840.png我们获取了 所有的input,并且新建了准备发送用的空列表。然后进行大循环,其中判断如果name框非空,则给这三个空列表都添加上数据。最后打印一下这三个数组列表看看效果:

微信图片_20220625143849.png微信图片_20220625143858.png

然后我们写一个请求传递给后端后就算ok;

微信图片_20220625143951.png

这里我们也要加上project.id,不然后台不知道是给哪个项目更新公共请求头

完整可复制版本:

function project_header_save() {
    var names = document.getElementsByName('header_name');
    var keys = document.getElementsByName('header_key');
    var values = document.getElementsByName('header_value');
    var req_names= [];
    var req_keys=[];
    var req_values=[];
    for(var i=0;i<names.length;i++){
        if(names[i].value != ''){
            req_names.push(names[i].value);
            req_keys.push(keys[i].value);
            req_values.push(values[i].value);
        }
    }
    $.get('/save_project_header/',{
        "project_id":"{{ project.id }}",
        "req_names":req_names.toString(),
        "req_keys":req_keys.toString(),
        "req_values":req_values.toString()
    },function (ret) {
        document.location.reload();
    })
}

然后我们去urls.py中写好对应微信图片_20220625144001.png

然后去后台views.py中写好对应函数微信图片_20220625144033.png

这里我们因为传输的时候 把列表转变成了字符串。所以这里我们打印一下,看看这个字符串是什么样的,以便我们再变回列表:

重启服务,刷新页面,保存请求头:

微信图片_20220625144052.png

很显然,js自动用英文逗号拼接了这个数组列表,所以我们一会给反编译回来就行,很简单。

代码上我们用一个循环遍历即可:

微信图片_20220625144102.png


重启服务,运行试试:

微信图片_20220625144139.png

上图中,修改了旧的俩个的key和value,然后新增的有个空白行和俩个正常的。然后我们点击保存。

然后再次打开:

微信图片_20220625144149.png

看到这个效果,就代表实现成功了!


增加/删除/修改 功能于一身的设计看来比较不错。


好了本节就到这结束,下节课我们要让这些公共请求头实际可以添加到接口库和用例库中使用了。

相关文章
|
关系型数据库 MySQL 测试技术
【分享】AgileTC测试用例管理平台使用分享
AgileTC 是一个脑图样式测试用例管理平台,支持用例设计、执行与团队协作,帮助测试人员高效管理测试流程。
584 116
【分享】AgileTC测试用例管理平台使用分享
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
778 1
|
人工智能 数据可视化 测试技术
AI测试平台自动遍历:低代码也能玩转全链路测试
AI测试平台的自动遍历功能,通过低代码配置实现Web和App的自动化测试。用户只需提供入口链接或安装包及简单配置,即可自动完成页面结构识别、操作验证,并生成可视化报告,大幅提升测试效率,特别适用于高频迭代项目。
|
人工智能 测试技术 调度
写用例写到怀疑人生?AI 智能测试平台帮你一键生成!
霍格沃兹测试开发学社推出AI智能测试用例生成功能,结合需求文档一键生成高质量测试用例,大幅提升效率,减少重复劳动。支持自定义提示词、多文档分析与批量管理,助力测试人员高效完成测试设计,释放更多时间投入核心分析工作。平台已开放内测,欢迎体验!
|
人工智能 测试技术 项目管理
测试不再碎片化:AI智能体平台「项目资料套件」功能上线!
在实际项目中,需求文档分散、整理费时、测试遗漏等问题常困扰测试工作。霍格沃兹推出AI智能体测试平台全新功能——项目资料套件,可将多个关联文档打包管理,并一键生成测试用例,提升测试完整性与效率。支持套件创建、文档关联、编辑删除及用例生成,适用于复杂项目、版本迭代等场景,助力实现智能化测试协作,让测试更高效、更专业。
|
安全 Java 测试技术
《深入理解Spring》单元测试——高质量代码的守护神
Spring测试框架提供全面的单元与集成测试支持,通过`@SpringBootTest`、`@WebMvcTest`等注解实现分层测试,结合Mockito、Testcontainers和Jacoco,保障代码质量,提升开发效率与系统稳定性。
|
人工智能 边缘计算 搜索推荐
AI产品测试学习路径全解析:从业务场景到代码实践
本文深入解析AI测试的核心技能与学习路径,涵盖业务理解、模型指标计算与性能测试三大阶段,助力掌握分类、推荐系统、计算机视觉等多场景测试方法,提升AI产品质量保障能力。
|
人工智能 自然语言处理 测试技术
AI测试平台的用例管理实践:写得清晰,管得高效,执行更智能
在测试过程中,用例分散、步骤模糊、回归测试效率低等问题常困扰团队。霍格沃兹测试开发学社推出的AI测试平台,打通“用例编写—集中管理—智能执行”全流程,提升测试效率与覆盖率。平台支持标准化用例编写、统一管理操作及智能执行,助力测试团队高效协作,释放更多精力优化测试策略。目前平台已开放内测,欢迎试用体验!
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。