文章目录
- 一、背景
- 1.1、部署过程略
- 二、使用过程
- 2.1、新增接口列
- 2.2、实现搜索效果
- 三、总结
一、背景
https://github.com/httprunner/HttpRunnerManager.git从github上找的接口测试平台,引入公司作为测试协同测试的平台,底层框架基于httprunner(requests+yaml+unittest),平台则基于Django+jinja2+sqlite实现,当然它里面还用了mq+定时任务+locust等等功能,按需索取!
1.1、部署过程略
这里需要提醒一下,最好使用python3.6.8版本,pip install -r requirements.txt时,注意依赖会报错;多百度一下也就可能解决了,最多体现的地方就是版本兼容问题。
二、使用过程
2.1、新增接口列
题主在使用中遇到一个问题,就是编写接口之后,path部分被包裹起来存入数据库了,如果想知道路径得点击名称进编辑页查看,还有就是想通过名称搜索获取接口信息,多少有点勉强,所以最好就是通过path来搜索,展示效果如下:一眼就能知道这些接口是一样的只是入参的某个值不一样
既然有想法就立马来实现,找到templates/test_list.html新增表头
再去表单中取值,但是这里需要注意一下,因为整个web框架是以httprunner为实现框架,它存起来的用例数据是一个个json对象,是满足它可以直接使用的。所以path部分不是单独存入数据库的,不然就可以像其他值一样取{{ foo.url }},那么它能改成将url单独存一个字段嘛?思考一下:能,需要做哪些工作呢?
这里有一个关于Django很有意义的知识点,就是在jinja2模板中使用python自定义的模板来渲染页面,怎么说呢?就像上面的url部分是在整个用例中,因为层级原因,并不能直接取值,所以需要处理,咱们先来看看用例数据是如何而来的。
看着存入数据库request字段的值,它需要取多少层才能得到url,很明显按其他的写法可能无法得到url,所以才需要自定义过滤器
在工程下找到templatetags目录,custom_tags.py已经有些写好的demo,也在实际场景运用起来了;
那么再接着写自己定义的过滤器
直接通过过滤器,提取出目标数据,jinja2模板渲染,原来是通过名称来搜索的,下面就要实现url来实现了
test_list.html默认文案修改,这个就更简单了
效果如下:
2.2、实现搜索效果
找到查询的db层操作,看看这个过滤是如何实现了,如果名字不是为空就查询,且看它是contains包含操作,所以支持模糊匹配
obj = obj.filter(name__contains=name) if name is not '' else obj.filter(author__contains=user)
那么对于结果就需要重新写了,|表示or,且还有一个Q,就这样实现了名称和request用例数据的模糊查询
from django.db.models import Q
obj = obj.filter(
Q(request__contains=name) | Q(name__contains=name)) if name is not '' else obj.filter(
author__contains=user)
三、总结
虽然这个平台已经停止维护了,在5年的开发背景下,还有很多不够完善的地方,比如在用例这里有编写者author数据,那么在suite页是不是也要显示一下?再有列表数据的维护,删除是一个一个的,那么批量删除它不香嘛?还有用例这里只负责执行,那么我想让它不执行又该如何做呢?等等这些在使用中相继被发现的,都需要被优化,既然是作为测试引入,而且也没有其他开发加入的情况下,测试就要担负起开发的责任,而且在实现方面,平台已经给足了样式,至于实现方式就仁者见仁智者见智了,日拱一卒无有尽,功不唐捐终入海!