测试开发实战[提测平台]16-状态流转和提测详情展示

微信搜索【大奇测试开】,关注这个坚持分享测试开发干货的家伙。
本篇讲解概要,快速了解内容关键点,也可先参照脉络点先实现再对照。这样的印象会更深刻。
测试开发实战[提测平台]16-状态流转和提测详情展示
文章图片

TPMServer 状态流转接口 【测试开发实战[提测平台]16-状态流转和提测详情展示】在提测功这个大功能涉及到状态直接流转的有两处,一个是提测成功后,对应测试在计划时间内需要点击 “开始测试” 将状态标记为下个阶段,即数据库表中status=2(测试进行中),另一个就在测试报告提交的时候如果状态为废弃后,可以将将其数据删除不展示(即软删除表字段isDel=1),从这两个动作来看都是同一个表的更新操作,所以可以合并一个接口实现,减少接口的冗余。
@test_manager.route("/api/test/change", methods=['POST']) def changeStatus(): # 初始化返回对象 resp_success = format.resp_format_success resp_failed = format.resp_format_failed # 获取请求参数Body reqbody = json.loads(request.get_data()) if 'id' not in reqbody: resp_failed['message'] = '提测ID不能为空' return resp_failed elif 'status' not in reqbody: resp_failed['message'] = '更改的状态不能为空' return resp_failed # 重新链接数据库 connection = pool.connection() with connection.cursor() as cursor: # 判断状态流转的操作,如果status==start为开始测试,status==delete 软删除 if reqbody['status'] == 'start': sql = "UPDATE `request` SET `status`=2 WHERE id=%s" resp_success['message'] = '状态流转成功,进入测试阶段。' elif reqbody['status'] == 'delete': sql = "UPDATE `request` SET `isDel`=1 WHERE id=%s" resp_success['message'] = '提测已被删除!' else: resp_failed.message = '状态标记错误' return resp_failed cursor.execute(sql, reqbody['id']) connection.commit() return resp_success

接口实现很简单,通过一个额外的字段标记做哪个字段更新,参考代码如上。
依然不要忘了对后端接口的测试:
Case1:请求不给定id或者status参数验证是否有参数错误提示返回
Case2:状态操作status=start验证是否将提测状态改为2
Case3:状态操作status=delete验证是否对数据进行软删除标记isDel=1
其实还有一种严格情况就是如果更改的id不存在该怎么处理,示例代码没有给出,看看是你的话如何进行优化呢?也当作个小练习吧。

TPMWeb 状态流转功能实现 前端分别对之前操作栏中的“开始测试”和“删除测试”添加 @click 方法,对后端状态改变接口进行调用,步骤套用不变
1.test.js 定义接口请求
export function changeStatus(body) { return request({ url: '/api/test/change', method: 'post', data: body }) }

2. /src/views/test/index.vue的