基于redmine的测试日报终于实现99.99%的自动化了

今年一月份的时候,我的博客出了一版自动采集数据生成excel的脚本,其实节省了测试组的很多数据处理时间

https://blog.csdn.net/FBX_fbx_FBX/article/details/104051445  

我觉得时间还可以再节省更多,就在工作之余又慢慢尝试多项改进,实现了99.99%的自动化--因为有每个人每天的进度变更,所以不可能实现完全自动化

说一下本次基于上次的变更

1.不再使用excel作为中间媒介,直接写成html

2.不再手动制图,使用matplotlib绘制

3.精简数据库存储内容,使用一张表存储历史统计数据

4.实现代码与配置分离

5.自动发送报告


优先看下配置文件properties.init 

[Mysql]
host=192.168.11.111
port=3306
user=root
passwd=Z121zZ
db=test_report

# host 为redmine的地址,在浏览器查看接口参数就可以看到项目的其他参数
[Redmine]
host=http://2.2.8.8:19507
username=fengbingxue
pw=123456
project_name=3d-room
fixed_version_id=986   

[Plan]
#start_time和end_time 数据库中取的数据的时间段
start_time = 2020-05-01
end_time = 2020-07-01
#以下三项配置,为测试计划的信息
test_time = 2019/2/12-2020/2/22
test_plan = http://2.2.8.8:19507/issues/67563
tester = 冯冰雪,冯冰雪,冯冰雪

 

主体部分:
导入以下三方库

from datetime import datetime
from redminelib import Redmine
import pymysql
import matplotlib.pyplot as plt
import configparser

引用配置文件内容

config = configparser.ConfigParser()
config.read("./properties.init")
config_mysql=config['Mysql']
config_Redmine=config['Redmine']
config_Plan=config['Plan']

文件分析模块部分,这一版加入了每日变动数据的读入(写在一起便于查找维护):

# 缺陷对应人员的数量及缺陷模块数量
def current_day():
    resolve_user_list,module_list,all_user_list,march = [],[],[],[]
    # test_rate edition
    i = 0
    with open('curren.txt', 'r', encoding='UTF-8') as file_current_read:
        current_lines = file_current_read.readlines()
        for line in current_lines:
            i += 1
            if i == 2: install_time = line
            if i == 4: branch = line
            if i == 6: git_log = line
            if int(i) > 7:
                line = line.split(',')
                march.append(line)
    test_edition=[install_time,branch,git_log]
    # user
    with open('user.txt', 'r',encoding='UTF-8') as file_user_read:
        user_lines = file_user_read.readlines()
        for user in user_lines:
            n = 0
            j = 0
            for issue in issues:
                if issue.assigned_to.name + '\n' == user:
                    j +=1
                    if issue.status.name == "已解决":
                        n += 1
            resolve_user_list.append([user[:-1],n]) #已解决的人员分布
            all_user_list.append([user[:-1],j])
        # module
        with open('module.txt', 'r', encoding='UTF-8') as file_module_read:
            module_lines = file_module_read.readlines()
            for module in module_lines:
                n = 0
                for issue in issues:
                    if issue.custom_fields._resources[2]['value'] + '\n' == module:
                        n += 1
                module_list.append([module[:-1],n])
    return resolve_user_list,module_list,all_user_list,march,test_edition
    # current_day[0] 已解决人员对应# current_day[1] 模块对应# current_day[2] 人员对应 #current_day[3] 测试进度  #current_day[4] 版本信息

redmine数据分析模块没有变动(特别说明:在我所在项目组,我们把阻塞缺陷定义为重大+紧急,如果你不一样,你可以在以下代码,stop_list部分修改)

def analysis():
    # 严重 grave 致命 deadly 紧急 urgent 已解决 resolved  超时 timeout 阻塞 stop
    become_list,grave_list,stop_list = [],[],[]  #退化缺陷 、重大、阻塞
    new_num, become,grave_num, deadly_num, timeout_num,stop_num,resolved_all = 0,0,0, 0, 0, 0, 0
    for issue in issues:
        update_time = str(issue.updated_on.year) + "-" + str(issue.updated_on.month) + "-" + str(issue.updated_on.day)
        updatetime_date = datetime.strptime(update_time, '%Y-%m-%d')
        today_date = datetime.strptime(today, '%Y-%m-%d')
        delta = today_date - updatetime_date
        if delta.days >= 7: timeout_num += 1
        if issue.custom_fields._resources[0]['value'] == "重大" or issue.custom_fields._resources[0]['value'] == "致命": deadly_num += 1
        if issue.custom_fields._resources[3]['value'] == '1':
            become += 1
            become_list.append([become,issue.assigned_to.name, issue.id,issue.subject])
        if issue.custom_fields._resources[0]['value'] == "重大" and issue.priority['name'] == "紧急":
            stop_num += 1
            stop_list.append([stop_num,issue.assigned_to.name, issue.id,issue.subject])
        if issue.status.name == "已解决": resolved_all += 1
        create_time = str(issue.created_on.year) + "-" + str(issue.created_on.month) + "-" + str(issue.created_on.day)
        if create_time == today:
            new_num += 1
            if issue.custom_fields._resources[0]['value'] == "重大":
                grave_num +
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值