前言
最近在公司搭建了一套自动化测试框架,使用的是pytest+allure,由于公司没有集成CI工具,所以在allure的报告中历史趋势图无法展示,类似下面这样
发现这里的数据是从生成的报告下的 result/widgets/history-trend.json的文件中取出来展示的,但是你在每次运行前都必须清除掉result下面的数据(这是allure要求的),那么每次这里的数据就只有当前的,所以在途中不会展示,为了解决这个问题,我们的思路就是,在没有生成报告之前将上一次的histroy-trend.json的数据弄出来,然后再添加到新的文件中,接下来我们看一下解决方法
解决方法
1.数据结构
原始的是这样的
我们需要改写成下面这样才会再报告中展示
可以看到整体是一个列表,在列表中每一次的测试结果以字典进行存储,buildOrder表示的是构建次数,reportUrl(方便再报告中可以跳转到其他构建次数的报告)表示的是对应构建次数的报告地址(这两个字段需要自己添加,allure默认只有data中的字段),这样一来,我们就需要每次的报告都单独存储为以当次构建次数命名的文件夹里面,接下来我们开始编写代码
2.代码实现
2.1 获取构建次数和上次报告内容
这里我们直接判断报告的路径是否存在,如果存在证明不是第一次构建,对报告下生成的文件夹进行排序,最后一个就是上次报告的编号,+1表示本次构建的编号,如果不存在,直接返回1和None,表示第一次构建,且报告内容为空,这里我们就获取到了每次的构建次数和上一次报告的内容
2.2 在文件中添加所需的字段
这里我们通过2.1中得到的构建次数和内容传入这个方法中,打开报告添加所需要的字段,返回修改后的数据
2.3 更新本次
将2.2中更新后的数据写入history-trend.json中
2.4 合并新老文件
2.5 完整调用路径
生成的报告文件目录如下图
3. 最后
这是第一次写博客,还请各位大佬多多指教,在写博客的过程中返回去看代码,发现中间有些代码还可以优化,而且好像有些问题搞得还是不是很清楚,所以多回头看看自己的代码,说不定有新的收获