文章目录
- 一、背景
- 二、前后端实现
- 2.1、先从前端页面入手suite_list.html
- 2.2、顺藤摸瓜views.py-->suite_list-->get_pager_info方法
- 2.3、后端加了字段,前端也需要同时考量两个方法
- 三、总结
- 四、心得交流
一、背景
需求还是内置测试需求,就是说一个小小热修上线,仅仅只是改动到某个模块的功能,那么测试只需回归这个模块的功能,不需要全量去回归接口自动化,当然这个诉求呢,从执行效率来说,目前全部接口执行完也不过5min,真的无伤大雅;不过呢,可以花两小时实现这个搜索,让它可以正常运作还是不错的。
二、前后端实现
2.1、先从前端页面入手suite_list.html
将搜索模块入口打开
<div class="am-btn-toolbars am-btn-toolbar am-kg am-cf"><form id="pro_filter" method="post" action="/api/suite_list/1/"><ul><li style="padding-top: 5px"><input value="{{ info.belong_project }}" type="text"name="belong_project"class="am-form-field am-input-sm am-input-xm"placeholder="所属项目"/></li><!-- 直接从测试用例列表复制模块搜索条件 --><li style="padding-top: 5px"><input value="{{ info.belong_module }}" type="text"name="belong_module"class="am-form-field am-input-sm am-input-xm"placeholder="所属模块"/></li><li style="padding-top: 5px"><input value="{{ info.name }}" type="text" name="name"class="am-form-field am-input-sm am-input-xm"placeholder="套件名称"/></li><li><button class="am-btn am-radius am-btn-xs am-btn-success"style="margin-top: 5px;">搜索</button><button class="am-btn am-btn-xs" style="margin-top: 5px;" id="clear" value="Reset">重置</button></li></ul></form></div>
搜索没有写js事件,action="/api/suite_list/1/"只有接口地址,
2.2、顺藤摸瓜views.py–>suite_list–>get_pager_info方法
elif url == '/api/suite_list/':# 支持项目和模块同时查询if belong_project and belong_module:obj = obj.filter(belong_project__project_name__contains=belong_project).filter(belong_module__contains=belong_module).filter(Q(suite_name__contains=name) | Q(suite_name__contains=name))elif belong_project is not '':obj = obj.filter(belong_project__project_name__contains=belong_project)elif name is not '':obj = obj.filter(suite_name__contains=name)elif belong_module is not '':obj = obj.filter(belong_module__contains=belong_module)
新增suite支持查询,那问题是数据哪里来?要不要先去models添加模块字段?
2.3、后端加了字段,前端也需要同时考量两个方法
修改增加/编辑套件页面 add_suite.html/edit_suite.html
/*****/
const suite = {'project': $("#belong_project option:selected").val(),'module': $("#belong_module_id option:selected").val(),'include': include,'suite_name': $('#suite_name').val(),'updater': $('#updater').val(),'id': {{ info.id }},
/*****/
它俩是一样的js实现!
三、总结
这里有两个问题就是在获取belong_module的时候,js套用的是获取了project_id然后保存去套件的时候保存起来,这样就需要在后台处理:
后台模块获取还是从module表里来
四、心得交流
前面是新增了suite保存附带了module信息的功能,但是在编辑suite时保存,并没有获取到模块信息,保存时失败。无奈只能修改代码,到底是改前端还是后端?这里就交给读者自己去思量了,不过博主已经兼容好了,有需要的话可以交流一下。