接口测试平台代码实现129: 全局变量-8

简介: 接口测试平台代码实现129: 全局变量-8

我们在上一节中,搞定了全局变量的增删改查功能。


现在我们来梳理和回忆一下,这个功能整个的设计。

微信图片_20220705213807.png

如图,我准备先设置俩组变量。这里要明确一个概念,每个按钮代表的是一个变量组,而不是一个变量,一个用户可以拥有多套变量组,每组内可包含多个变量。用户在之后的使用时,可以对具体的项目,设置生效的变量组。生效后,该项目的接口中引入的变量,才会去该变量组中找到对应的值。这点设计和postman类似。

   

所以,针对每个项目,我们都需要增加一个字段,该字段包含了该项目可以生效的变量组的id。


这个设计,同样也需要前后端共同配合实现。其中前端我们就设计成,用户通过具体项目进入全局变量设置页面的时候,带着项目所生效的变量组id,然后在所有变量组上通过可选框等体现出来。


首先我们去models.py中 对项目表增加字段:

微信图片_20220705213814.png

然后运行同步命令:

微信图片_20220705213820.png

在我们之前的设计中,项目的所有数据在进入全局变量页面时都已经带着了,所以我们现在直接去global_data.html 中进行实现即可:

微信图片_20220705213826.png

如上图,我在每个变量组按钮后都加上了个多选框,以此来显示和设置 是否在此项目中生效。注意,其中的id和value都是变的,借助i.id让每个变量组都不同。而其中的name是固定的,所有都用的一个。所以我们后续的js代码中可以用getElementsByName  方法来一次性拿到所有框。

看下效果:

微信图片_20220705213832.png

针对此框,我们要做的是俩件事:

  1. 根据带进来的项目数据,来判断是否选中
  2. 用户点击选中或取消时,请求后台真实的进行变更数据库。


首先来完成第一件事:

微信图片_20220705213838.png

该端代码中 判断一个字符串是否在一个数组列表中运用了jq的 $.inArray方法,这种简单的判断如果在js中还是很麻烦的。

可复制:

<script>
      if("{{ project.global_datas }}" != "None" && "{{ project.global_datas }}" != ""){
          if( $.inArray(  "{{ i.id }}", "{{ project.global_datas }}".split(',') ) != -1 ){
              document.getElementById('check_{{ i.id }}').checked = 'checked'
          }
      }
</script>

如上图,我在循环内 都插入了一个小型的js代码,让其判断当前项目的公共变量是否是空或None,如果不是,则判断当前循环内的这个变量组的id是否在 列表格式的 项目生效变量组id的列表中。如果存在,则拼接成这个变量组多选框的id并把其变为选中状态。


我们来测试下:

用例1:当前项目属于旧项目,更改的表结构产生的新字段 是否会报错:

结果没有报错,通过。


用例2:新创建的项目,进入该页面是否报错:

结果也没报错,通过。


用例3:当前项目中是正常的选中了第一个变量组:

我们得首先去后台给该项目手动写一个global_datas来方便测试。所以记下现在的变量组1的id 然后去后台设置:

微信图片_20220705213845.png

如果是多个则用英文逗号存储,不过后续的存储全是我们自动js负责,所以也不会出现错误也不用人去手动。

效果如下:

微信图片_20220705213851.png

可以看到,显示效果已经成功了。


接下来我们要做的是,点击选中/不选中 的自动保存。


首先我们先来给所有的这个check_input增加一个 点击更改内容就触发js函数的 属性:onchange,顾名思义,和onclick都差不多哦。

微信图片_20220705213857.png

我们在下面写个叫change_check()的函数,当任意多选框被点击后,这个函数就会触发:微信图片_20220705213904.png

写好后我们就要实现它了, 逻辑很简单,当被触发后,它就去统计最新的选择情况,然后连同项目id,一起发给后台,让后台更新数据库后,它在刷新本页面 即可实现效果。

代码如下:

微信图片_20220705213910.png

function change_check() {
        // 获取所有选中的checkbox的值 组成列表 chk_value
        var chk_value =[];
        $('input[name="check_names"]:checked').each(function(){
        chk_value.push($(this).val());
        }); //依然是jq的方法
        // 把结果发送给后台
        $.get("/global_data_change_check/",{
            "project_id":"{{ project.id }}",
            "global_datas": chk_value.toString()
        },function (ret) {
            document.location.reload()
        })
    }

代码中依然使用了 $开头的 jquery的写法,大家可以学习下。


然后我们去urls.py中:

微信图片_20220705213923.png

最后是views.py:

微信图片_20220705213933.png

然后我们重启服务,刷新页面开始测试:

微信图片_20220705214048.png

可以看到已经可以正常的 选中 取消 等操作了。

相关文章
|
8天前
|
算法 Java 测试技术
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
40 13
|
18天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
70 11
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
65 1
|
2月前
|
人工智能 供应链 安全
AI辅助安全测试案例某电商-供应链平台平台安全漏洞
【11月更文挑战第13天】该案例介绍了一家电商供应链平台如何利用AI技术进行全面的安全测试,包括网络、应用和数据安全层面,发现了多个潜在漏洞,并采取了有效的修复措施,提升了平台的整体安全性。
|
2月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
70 3
|
2月前
|
监控 安全 测试技术
构建高效的精准测试平台:设计与实现指南
在软件开发过程中,精准测试是确保产品质量和性能的关键环节。一个精准的测试平台能够自动化测试流程,提高测试效率,缩短测试周期,并提供准确的测试结果。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
150 1
|
3月前
|
人工智能 监控 测试技术
云应用开发平台测试
云应用开发平台测试
82 2
|
2月前
|
监控 安全 测试技术
构建高效精准测试平台:设计与实现全攻略
在软件开发过程中,精准测试是确保产品质量的关键环节。一个高效、精准的测试平台能够自动化测试流程,提高测试覆盖率,缩短测试周期。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
71 0
|
3月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
83 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
4月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
280 7
Jmeter实现WebSocket协议的接口测试方法