日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python产品缺陷_基于python从redmine-api中获取项目缺陷数据(1)

發布時間:2024/8/5 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python产品缺陷_基于python从redmine-api中获取项目缺陷数据(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.引言

本文主要內容是將如何利用 Python 對 Redmine缺陷進行缺陷數據獲取操作。目前統計缺陷數據時基本是根據項目手動去redmine獲取缺陷數據,至少要花費一個工作日去完成,目前的目標是通過python腳本通過 Redmine-API快速去獲取各個維度的缺陷數據

需求:

需要輸出 產品質量數據(總BUG數,每日新建bug數,每日關閉bug數,bug修復周期,bug提交者統計、bug嚴重程度比)

實現方案:

1.redmine API形式發布不同維度的缺陷數據統計接口

2.采用python調用api接口,獲取缺陷數據,并存儲在數據庫

2.必備環境

Python3

pycharm IDE

mysql

自行安裝Python需要的包

redminelib

datetime

json

pandas

charts

3.redmine-api理解

了解各個字段代表的含義,比如新建BUG、關閉BUG,優先級、作者,引入者、BUG狀態等字段的定義及獲取

4.基于python編碼-獲取缺陷數據

引入必須的python庫及包

#coding=utf-8

#引入所需要的庫

from redminelib import Redmine

from pandas import DataFrame;

from string import punctuation

import datetime

import time

import matplotlib

import charts

from mysql_save import Bugcount

import json

定義函數

由于篇幅有限及涉及項目業務,這里只摘抄一部分關鍵代碼

首先定義函數

def __init__(self, userName, passWord):

self.userName = userName

self.passWord = passWord

self.redMineURL = 'http://10.20.11.218:8222/redmine'

try:

self.redmine = Redmine(self.redMineURL, username=self.userName, password=self.passWord)

self.project = self.redmine.project.get('f_project')

except Exception as ex:

raise RuntimeError('無法連接到Redmine,請檢查網絡!\n'+ str(ex))

self.fields = None

#新建BUG數定義篩選

def creat_list(created_on,subject):

redmine = MyRedMine("zhangmeiyuan656", "password")

issues1 = redmine.redmine.issue.filter(

project_id='f_project',

created_on='>

#closed_on='>

status_id='*'

subject=('~'+str(subject)).encode('utf-8'))

result1=str(len(issues1))

return result1

#return issues

#關閉BUG數定義篩選

def closed_list(closed_on,subject):

redmine = MyRedMine("zhangmeiyuan656", "password")

issues2 = redmine.redmine.issue.filter(

project_id='f_project',

closed_on='>

status_id='*',

subject=('~'+str(subject)).encode('utf-8'))

result2=str(len(issues2))

return result2

#數據處理及時間戳轉換使用

if __name__ == '__main__':

redmine = MyRedMine("zhangmeiyuan656", "PASSDWOR")

start_time = "2017-08-01 00:00:00"

end_time = "2017-08-16 00:00:00"

start_time = int(time.mktime(time.strptime(start_time, "%Y-%m-%d %H:%M:%S")))

end_time = int(time.mktime(time.strptime(end_time, "%Y-%m-%d %H:%M:%S")))

c = start_time

while (c < end_time):

c = c + 86400

d = datetime.datetime.utcfromtimestamp(c)

f=str(d.strftime("%Y-%m-%d")

#定義類,字典,導入MYSQL數據庫

bugCount = Bugcount()

bug_data1 = {}

bug_data1['date_time'] = f

bug_data1['newbug'] = creat_list(f,"XXXv1.0")

bug_data1['closebug'] = closed_list(f,"XXXv1.0")

bugCount.insert_to_db(bug_data1)

bug_data1_string = json.dumps(bug_data1)

print ('json:',bug_data1_string)

4.數據存儲

MYSQL安裝:

在官網上下載mysqlserver 下一步一直安裝

mysql配置

1.step1:

蘋果->系統偏好設置->最下邊點mysql 在彈出頁面中 關閉mysql服務

(點擊stop mysql server)

2.進入終端輸入:cd /usr/local/mysql/bin/

回車后 登錄管理員權限 sudo su

回車后輸入以下命令來禁止mysql驗證功能 ./mysqld_safe --skip-grant-tables &

回車后mysql會自動重啟(偏好設置中mysql的狀態會變成running)

3.輸入命令 ./mysql

回車后,輸入命令 FLUSH PRIVILEGES;

回車后,輸入命令 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的新密碼');

至此,密碼修改完成,可以成功登陸。

注意測試:mac終端基礎操作mysql

首先手動啟動MySQL應用程序

打開終端輸入如下命令: /usr/local/MySQL/bin/mysql -u root -p

*4、進入編碼,新建腳本mysql_sav.py

由于篇幅有限,這里只摘抄一部分

#coding=utf-8

#引入所需要的庫

import pymysql

import json

#"""docstring for Bugcount"""

#連接數據庫

connect = pymysql.connect(

host='localhost',

user='root',

passwd='jammy2017',

db='test',

port=3306,

charset='utf8'

)

#獲取cursor對象來進行操作

cursor = connect.cursor()

def __init__(self):

pass

#插入數據

def insert_to_db(self, bug_data):

self.cursor.execute("use test")

self.cursor.execute(

"insert into bug_line(date_time,newbug,closebug) values(%s,%s,%s)", (bug_data.get('date_time'), bug_data.get('newbug'), bug_data.get("closebug")))

self.connect.commit()

5.數據展現

這里嘗試了三種方式

1、一種是將數據通過pands方法轉換后以csv格式導出,這種只適用于將獲取到的數據導出excel表格

示例如下:

#生成CSV格式導出

# df = DataFrame({

# '時間周期':['2017-07-24|2017-07-30','2017-07-20|2017-07-23','2017-07-10|2017-07-20'],

# '每周新建bug數':[str(len(issues)),str(len(issues2)),str(len(issues3))],

# '每周關閉bug數':[str(len(issues4)),str(len(issues5)),str(len(issues6))]

# })

# print(df)

# df.to_csv(

# "/Users/zhangmeiyuan/Desktop/爬蟲腳本/bug趨勢表格.csv",encoding='gb18030'

# )

2、通過POTLY庫生成圖表,不過此方法是在線生成的圖表,借助POTLY的服務器,不能存本地

py.sign_in('jammy0528','erYbv2ED1VmGbWglVhHf')

new_bug = Scatter(

x=[1,2,3],

y=[str(len(issues3)),str(len(issues2)),str(len(issues))],

)

close_bug = Scatter(

x=[1,2,3],

y=[str(len(issues6)),str(len(issues5)),str(len(issues4))]

)

data = Data([new_bug,close_bug])

py.plot(data, filename = 'bug-line')

3、通過hightcharts+jupyter生成圖表

2C46FA55-FC46-41EC-A40D-8F8A1996F00D.png

6、關于數據可視化,未完待續

后續考慮通過web框架flask將獲取到的數據進行web數據可視化

總結

以上是生活随笔為你收集整理的python产品缺陷_基于python从redmine-api中获取项目缺陷数据(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。