我们每天的测试数据,需要及时反馈给领导,领导不喜欢看细节,就喜欢看结果,一目了然,快速又不费事。
领导最想看到就是 每个人的头上都有多少缺陷放着,大家上班的时候到底是不是在踏踏实实做事。报告真的很能说明事实。
测试组需要每天整理一份日报发送邮件给大家,从redmine(我司用的这款工具,相当好用啊,相比jira/禅道/bugzilla)上下载筛选过的缺陷列表,然后进行数据统计,重新处理模板报表···随着想要的信息越来越多,没半个小时这报告出不来,关键是有时候下班下得早,缺陷状态还不稳定(开发都还在处理),回家之后还要远程连接公司服务器。
反正就一个目的,为了这件事情能做得快点,大家早点下班,早点休息。
由于此版本是改版代码,存在一些多余的数据,后期修改
-----------
先来一些准备工作
其中有一些可能随时跟新的文本信息,单独放到txt,如下(注意文件名字要一致):
current.txt (每日更新的数据)
(此行代码不读)请在下面输入今日的git号:
9543a8c16e133f7a323d124e024622a59f938727
(此行代码不读)请按照格式[报表,谭秋,进度:30%;阻塞缺陷:3个;...]输入进展:
会员管理,李四,1.测试进度:48.6%;2.提交bug数:5个;3.提交的严重问题:无;4.阻塞进度的问题描述:无
信息管理,张三,1.测试进度:48.6%;2.提交bug数:5个;3.提交的严重问题:无;4.阻塞进度的问题描述:无
仓库管理,王五,1.测试进度:48.6%;2.提交bug数:5个;3.提交的严重问题:无;4.阻塞进度的问题描述:无
module.txt(项目所有的模块,会以此做统计,此处只举例三个)
会员管理
注册管理
系统管理
user.txt (redmine 是姓与名 之间存在空格的存储,需要注意书写)
张 三
李 四
王 五
冯 宝宝
数据库结构:
你不想自己建的话,可以用这个sql:
/*
Navicat MySQL Data Transfer
Source Server : 1
Source Server Version : 50728
Source Host : 192.168.1.1:3306
Source Database : report
Target Server Type : MYSQL
Target Server Version : 50728
File Encoding : 65001
Date: 2019-12-25 14:12:43
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for all_data
-- ----------------------------
DROP TABLE IF EXISTS `all_data`;
CREATE TABLE `all_data` (
`time_t` date NOT NULL,
`new` int(255) unsigned zerofill DEFAULT NULL,
`ongoing` int(255) unsigned zerofill DEFAULT NULL,
`feedback` int(255) unsigned zerofill DEFAULT NULL,
`delay` int(255) unsigned zerofill DEFAULT NULL,
`reopen` int(255) unsigned zerofill DEFAULT NULL,
`block` int(255) unsigned zerofill DEFAULT NULL,
`refused` int(255) unsigned zerofill DEFAULT NULL,
`untreated` int(255) unsigned zerofill DEFAULT NULL,
`resolved` int(255) unsigned zerofill DEFAULT NULL,
PRIMARY KEY (`time_t`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for daily_data
-- ----------------------------
DROP TABLE IF EXISTS `daily_data`;
CREATE TABLE `daily_data` (
`time_t` date NOT NULL,
`new` int(255) unsigned zerofill DEFAULT NULL,
`ongoing` int(255) unsigned zerofill DEFAULT NULL,
`feedback` int(255) unsigned zerofill DEFAULT NULL,
`delay` int(255) unsigned zerofill DEFAULT NULL,
`reopen` int(255) unsigned zerofill DEFAULT NULL,
`block` int(255) unsigned zerofill DEFAULT NULL,
`resolved` int(255) unsigned zerofill DEFAULT NULL,
PRIMARY KEY (`time_t`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
-- ----------------------------
-- Table structure for git_msg
-- ----------------------------
DROP TABLE IF EXISTS `git_msg`;
CREATE TABLE `git_msg` (
`time_t` date NOT NULL,
`git_num` varchar(255) DEFAULT NULL,
PRIMARY KEY (`time_t`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
准备好之后
附代码吧,你可以根据你的情况进行改动(由于此为改版,存在多余的操作,还望大家不要指责,后面会进行完善的)
# -*- coding:UTF-8 -*-
import xlwt
from datetime import datetime
from redminelib import Redmine
import pymysql
file_user = 'user.txt' # 参与人员名单
file_module = 'module.txt' # 功能模块列表
file_curren = 'curren.txt' # 每日进度和git数据
file_report = 'dailyreport.xls' # 报表生成位置
time_list = ['2019-11-25', '2020-04-10'] # 设