您现在的位置是:首页 >其他 >给httprunnermanager接口自动化测试平台加点颜色(一)网站首页其他

给httprunnermanager接口自动化测试平台加点颜色(一)

我先测了 2023-06-09 00:00:02
简介给httprunnermanager接口自动化测试平台加点颜色(一)

一、背景

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页是不是也要显示一下?再有列表数据的维护,删除是一个一个的,那么批量删除它不香嘛?还有用例这里只负责执行,那么我想让它不执行又该如何做呢?等等这些在使用中相继被发现的,都需要被优化,既然是作为测试引入,而且也没有其他开发加入的情况下,测试就要担负起开发的责任,而且在实现方面,平台已经给足了样式,至于实现方式就仁者见仁智者见智了,日拱一卒无有尽,功不唐捐终入海

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。