给httprunnermanager接口自动化测试平台加点功能(七)

文章目录

      • 一、背景
        • 1.1、用例列表test_list
        • 1.2、套件列表suite_list
      • 二、实现
        • 2.1、用例edit页面
        • 2.2、套件edit页面
      • 三、数据结构
        • 3.1、更新数据结构
      • 四、知识扩展
      • 五、总结

一、背景

前面几章优化,从功能bug的优化、到列表的优化、还有字段的优化,暂时满足了需求,但是使用过程中,却因为团队的使用者越来越多,最后的维护却有些缺点,譬如咱们有创建者,如果在其他人维护之后,只有update_time,却不知道是谁,这样一来不方便跟踪记录,不知道谁在什么时候更新了内容,这样就不利于跟踪解决问题。既然在公司推行平台框架协作办公,那么测试组内人员在新增、更新这个接口用例的时候,就需要区分:创建者和更新者,所以需要对用例、套件列表新增updater字段。

1.1、用例列表test_list

...
<th class="table-type">所属项目</th>
<th class="table-type">所属模块</th>
<th class="table-type">创建者</th>
<!-- 新增更新者列 -->
<th class="table-type">更新者</th>
<th class="table-date am-hide-sm-only">创建时间</th>
<th class="table-date am-hide-sm-only">更新时间</th>
<th width="163px" class="table-title">操作</th>
...
<td>{{ foo.request|extract_url }}</td>
<td>{{ foo.request|extract_skip }}</td>
<td>{{ foo.belong_project }}</td>
<td>{{ foo.belong_module.module_name }}</td>
<td>{{ foo.author }}</td>
<!-- 新增更新者列 -->
<td>{{ foo.updater }}</td>
<td>{{ foo.create_time }}</td>
<td>{{ foo.update_time }}</td>
...

且看页面效果

在这里插入图片描述

1.2、套件列表suite_list

...
<th class="table-type">所属项目</th>
<th class="table-type">包含用例</th>
<th class="table-type">创建者</th>
<th class="table-type">更新者</th>
...
<td>{{ foo.author }}</td>
<td>{{ foo.updater }}</td>
<td>{{ foo.create_time }}</td>
<td>{{ foo.update_time }}</td>
...

套件列表的效果

在这里插入图片描述

二、实现

页面加载的列是添加好了,但是数据来源呢?所以在创建的时候需要提交作者,更新亦是如此,以前的操作呢题主故意给这个字段给隐藏了,首先它不需要花时间填写,更不要暴露出来给人更改(可以设置不能更改属性),所以需要先找edit页面,添加对应的编辑页面。

2.1、用例edit页面

...
<div class="form-group"  hidden="hidden"><div class="input-group col-md-4 col-md-offset-1"><div class="input-group-addon" style="color: #0a628f">更新人员</div><input type="text" class="form-control" id="updater" name="updater"placeholder="用例更新人员" value="{{ account }}"><!-- 默认获取当前登录用户 --></div>
</div>
...

经过路径查找,需要找到managers.py模块的update_case方法,增加如下代码

obj.updater = case_info.pop('updater')

2.2、套件edit页面

同样对于更新者,不需要编辑,默认隐藏输入框并默认取当前登录用户即可;js提交的数据需要加上updater

...
<div class="form-group" hidden="hidden"><div class="input-group col-md-4 col-md-offset-1"><div class="input-group-addon" style="color: #0a628f">编写人员</div><input type="text" class="form-control" id="updater" name="updater"placeholder="用例更新人员" value="{{ account }}"></div>
</div>
...# 下面找到edit_suite页面的onClick事件,需要添加updater字段并且赋值
...
const suite = {'project': $("#belong_project option:selected").val(),'include': include,'suite_name': $('#suite_name').val(),'updater': $('#updater').val(),'id': {{ info.id }}};
...

不管是edit还是add最终的逻辑还是在更新数据库,如edit_suite_data函数修改如下:

updater = kwargs.pop('updater')
...
suite_obj.updater = updater  # 表示数据库对象更新updater字段

三、数据结构

前面从html页面增加对应的列以及编辑页的updater字段,再到逻辑处理层,但是最终操作的是数据库,那么表结构都没支持,如何能通过页面操作的成功
在这里插入图片描述

3.1、更新数据结构

# 在用例和套件表中添加updater字段
updater = models.CharField('维护人员', max_length=20, null=True)

命令行如下:

python manage.py makemigrations
python manage.py migrate

四、知识扩展

1、在div标签中,hidden=“hidden”,顾名思义,它是不会在页面中显示;
2、在input标签中,disabled,表示在当前输入框中不支持修改该值;
在这里插入图片描述

总结就是:既然author、updater取当前用户的值,并且不允许修改,那么它就不需要显示了。
3、在表字段设计中,如果是字符串类型,null=True,表示它支持为null,否则可能在迁移数据库出现报错。

五、总结

终归是在别人的系统上二次开发,对于原本相同的操作,总是会出现不同的位置,这样对于改造来讲,会增加一定的难度,好在前面已经有些经验,改起来也算是轻车熟路。不管怎么说:日拱一卒无有尽、功不唐捐终入海!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/27463.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据从发出到接收的细节介绍{封装与解封装}

系列文章目录 数通王国历险记&#xff08;5&#xff09; 目录 前言 一&#xff0c;数据封装的全过程 1.1&#xff0c;应用层的封装形式 1.2&#xff0c;传输层的封装形式 理解&#xff1a; 1.3&#xff0c;网络层的封装形式 理解&#xff1a; 1.4&#xff0c;数据链路层…

编程导航算法通关村第 1关 | 两个链表的第一个公共节点

编程导航算法通关村第 1关 | 白银挑战 剑指 Offer 52. 两个链表的第一个公共节点 集合/map 将headA中的链表&#xff0c;放在一个set集合中&#xff0c; 依次遍历headB&#xff0c; headB中第一个包含在set集合中的节点就是第一个公共子节点 ListNode getIntersectionNode(L…

WireShark

文章目录 IP协议部分协议对应协议号路由器IP分片IP分片的缺点 TCP协议[TCP MSS](https://blog.csdn.net/meihualing/article/details/113739693) UDP协议ARP ICMPDHCPDNSFTP wireshark可以学习网络协议&#xff0c;解决一些问题 IP协议 IP指网际互连协议&#xff0c;Internet P…

ROS节点通信Demo

0 开始之前 确保你已经安装了ROS (Robot Operating System)。 1 第一步&#xff1a; 创建一个ROS包 在开始编程前&#xff0c;我们首先创建一个新的ROS包(package)。移动到你的catkin workspace的 src 文件夹下&#xff0c;然后运行以下命令&#xff1a; cd ~/catkin_ws/sr…

Sentinel整合OpenFegin

之前学习了openFeign的使用&#xff0c;我是超链接 现在学习通过Sentinel来进行整合OpenFegin。 引入OpenFegin 我们需要在当前的8084项目中引入对应的依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-sta…

Spring:表达式语言

Spring EL 概述使用概述 Spring 表达式(Spring EL) 是一种功能强大的表达式语言,以 #{ 表达式 } 作为定界符,用于在运行时对对象进行访问和操作。通过使用 Spring 表达式达到简化开发、减少逻辑或配置的编写的目的。 使用 Spring EL 主要可以引用 bean ,调用其属性和方…

基于PyQt5的桌面图像调试仿真平台开发(13)图像边缘显示

系列文章目录 基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)…

ES系列--es初探

一、前言 一般传统数据库&#xff0c;全文检索都实现的很鸡肋&#xff0c;因为一般也没人用数据库存文本字段。进 行全文检索需要扫描整个表&#xff0c;如果数据量大的话即使对 SQL 的语法优化&#xff0c;也收效甚微。建 立了索引&#xff0c;但是维护起来也很麻烦&#xff0…

深入学习 Redis - 常用数据类型,结构认识

目录 一、Redis数据类型 Redis 数据类型结构简单认识 每个数据类型具体的编码方式 1.string 2.hash 3.list 4.set 5.zset 典中典&#xff1a;记数字&#xff01;&#xff01;&#xff01; 6.查看 key 对应 value 的实际编码方式 如果本文有帮助到你&#xff0c;不…

分布式应用之存储(Ceph)

分布式应用之存储&#xff08;Ceph) 一、数据存储类型 存储类型说明典型代表块存储一对一&#xff0c;只能被一个主机挂载使用数据以块为单位进行存储硬盘文件存储一对多&#xff0c;能同时被多个主机挂载/传输使用&#xff0c;数据以文件的形式存储&#xff08;元数据和实际…

python开发项目基于语音识别的智能垃圾分类系统的设计与实现

博主介绍&#xff1a;擅长Java、微信小程序、Python、Android等&#xff0c;专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案例…

火焰图性能监测

准备工作——安装perf 我是在github的codespace上搞的&#xff0c;可以按下面的方式安装perf&#xff1a; sudo apt install linux-tools-generic sudo apt install linux-cloud-tools-azure参考在WSL2中使用perf性能剖析工具 测试程序——简单的C程序 弄一个无限循环的C程…