数据工厂系列(29)数据报表展示

大家好~我是小方,欢迎大家关注笋货测试笔记 体完记得俾个like

回顾

在上篇中,整个数据工厂的核心已经是开发完毕了,但是平台的话,肯定得有一些数据报表,好看的报表可以给你升职加薪带来帮助···

数据报表

数据报表有几个指标,大家可以看看下图

用户数、场景数、项目数、业务线数、调用成功率、调用量···

执行状态、调用方式、业务线分布饼图

最后有最近7天场景调用量、创建量、成功数、异常数、失败数···

  • 最上面6个指标

直接调用BaseCrud.get_with_count方法即可,直接查询出数量

  • 中间饼图指标

运行状态和调用方式直接查log表,进行分组统计数量,业务线分布查case表,方式同上···

  • 最近7天场景趋势图

这里指标有调用量、成功数、失败数、异常数、创建数,其中除了创建数,其他指标都可以通过log查询得出

先通过开始时间和结束时间进行筛选数据,开始时间为今天,结束时间为今天-6天,再通过日期进行分组,通过函数case_whensum算出成功数、失败数、异常数,通过count算出总数,但是这里需要注意一点,有些日期确实没有数据,这时候需要手动补充数据,通过while,从开始日期开始算起,如果在源数据取不到数据,就默认补充0,循环结束条件为开始日期大于结束日期···

最终效果图

git Webhook同步项目

因为我们的服务跟项目进行解耦了,项目存放在git上,每次我们更新代码,是不是都得在平台上执行一下同步项目,长久下来确实比较繁琐,为此,我们可以使用git的webhook功能,每当有push代码时,通过webhook调用数据工厂的api,执行同步项目···

我们可以来看看gitee的webhook功能,简介地址:gitee.com/help/articl...

  • WebHook 简介

简单来讲就是我们只要维护一个api,每次push时,post请求这个api,就能实现同步项目功能

  • WebHook 密钥验证和验证算法

gitee webhook文档有说到,webhook可使用签名方式,什么是签名呢?通俗来讲就是服务端确认收到的请求完整且可信任,才执行操作,这种就是防止恶意刷api

这里采用了HmacSHA256算法计算签名,下面也给了个demo,但是demo只支持Python2,不得不不吐槽一下···不过问题不大,自己另写一个呗,签名算法代码如下

python 复制代码
class Sha256(object):

    @classmethod
    def encrypt(cls, timestamp: str):
        secret = constants.SECRET
        data = f"{timestamp}\n{secret}"
        sign = base64.b64encode(
            hmac.new(secret.encode('utf-8'), data.encode('utf-8'), digestmod=sha256).digest()).decode()
        return sign
  • 同步逻辑代码改造

将之前的sync_project_logic方法改造一下,判断是哪个sys过来的请求,如果是平台上就通过主键id查出项目信息,执行人默认为请求的那个人,如果是gitee的webhook就通过git的项目名称查出项目信息,执行人为admin用户,后续的逻辑跟之前一样

上面已经写了个签名方法,我们只需要验证gitee传过来的签名数据是否与后端服务加密生成的签名数据一致,一致即可后续的操作···

这里我们只需要从request中获取请求头信息,再进行校验好了,check逻辑比较简单,大家可看看下面的代码

其实这里校验逻辑可以放在中间件里做,但是就这么一个api没什么必要···具体原因可看看解释哈,溜达哥yyds!!!

最终sync_project_logic_by_git逻辑如下

路由函数这里就不截图,直接看看源码好了···比较简单,添加路由

最后记得给这个路由加上白名单

其他优化点

脚本执行引入运行日志,日志的话,需要手工注入进去,然后最后return回来,平台只负责接收日志

最后给大家看看内部数据工厂的日志吧,后续我也把相关日志装饰器放上去,在funcase项目哦~

总结

今天到这里的话,数据工厂已经开发完了,大家还有什么需求或者想法可以咨询我,大家一起交流学习哈~下篇我们来进行部署上线,继续补充使用说明文档、功能介绍文档和部署文档等等···

相关推荐
llxxyy卢29 分钟前
polar夏季赛部分题目
开发语言·python
闵孚龙30 分钟前
PyTorch 系列 之 nn.Module:所有模型的骨架
人工智能·pytorch·python
AI玫瑰助手31 分钟前
Python模块:from...import...导入指定内容
开发语言·python·信息可视化
小森林之主39 分钟前
Python re 模块速查:从实战对比中掌握正则表达式
python·正则表达式·性能测试·re模块·编程实战
郭wes代码1 小时前
Win10 拒绝访问、长期关机自动维护与声音图标灰色故障解决记录
windows·python·开源
伊布拉西莫1 小时前
LangChain LCEL源码深度剖析
python·langchain
用心_承载未来1 小时前
从“复制链接→打开APP“到“一键解析“:我做了个短视频去水印工具
python·去水印·短视频去水印
TYUT_xiaoming1 小时前
yolo模型训练
人工智能·python·yolo
MageGojo2 小时前
百度热搜API接入实战:数据结构解析与工程化调用指南
python·数据抓取·api集成·热点数据·接口调试
TechWayfarer2 小时前
查IP归属地接入实战:保险理赔如何做动态风险监控与预警
网络·python·tcp/ip·安全·flask