python excel案例导入jira_python实战一:将excel数据导入到jira

本文介绍了一个使用Python脚本将Excel中的bug列表自动导入Jira的实战案例。通过比较不同日期的Excel文件,找出新增bug并使用JIRA API创建问题。涉及模块包括jira、xlrd和re,实现了自动化创建Jira bug,提高了工作效率。
摘要由CSDN通过智能技术生成

excel&jira同步

背景:

第三方测试会以excel形式提交buglist,这个buglist需要同步到jira中,在jira进行跟踪,并将处理结果反馈给第三方;以往都是复制粘贴,为了减轻繁琐的操作,提高工作效率,这次要使用脚本通过jira的接口进行同步

因开发时间有限,不能完全实现自动化,本文仅解决将指定excel中的数据导入jira,后续有时间再做优化:

1.将jira.bug的解决状态同步到excel中

2.将第三方回归结果同步到jira中

3.将第三方提供的bug相关附件同步到共享目录中,并在bug.Description中增加链接

4.定期自动扫描buglist文件夹,发现新文件后,同步excel和jira数据,下载bug相关附件并共享

涉及的模块: jira、xlrd、re

基本环境:py34 win32

核心代码块:

#通过比较当天和前一天的bug表,实现将新增的bug导入jira

#buglist要按编号升序排列

#获取前一天的buglist的最大行号

#获取当天的buglist的最大行号

#获取数据行并转化成jira的数据格式

#将新增的bug导入jira

import xlrd

import re

from jira import JIRA

fileLast = 'D:\python\pjexcel2jira\Buglist0701.xls'

fileCurr = 'D:\python\pjexcel2jira\Buglist0702.xls'

lastData = xlrd.open_workbook (fileLast)

currData = xlrd.open_workbook (fileCurr)

lastTable=lastData.sheet_by_name(u'buglist')

currTable=currData.sheet_by_name(u'buglist')

i = lastTable.nrows

jira = JIRA('http://localhost/jira/',basic_auth=('username', 'password'))

#create bug

while i

#将标题行和数据行转换为dict,以方便检索

ibug=dict(zip(currTable.row_values(1),currTable.row_values(i)))

#不是空行则转换为jira格式

if ibug['No.'] != '':

ijirabug = format2Jira(ibug)

#创建jira.bug

new_issue = jira.create_issue(fields=ijirabug)

i=i+11

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

361

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

格式转换函数:

def format2Jira(bug=None):

jirabug={}

if bug['No.'] == '':

return jirabug

else:

summary = convert2JiraSummary(bug)

description = convert2JiraDescription(bug)

components = convert2JiraComponents(bug)

priority = convert2JiraPriority(bug)

versions = convert2JiraVersions(bug)

jirabug = {

"project": {"id": "11108"},

"summary": summary,

"description": description,

"issuetype": {"name": "Bug"},

"timetracking": {

"originalEstimate": "1h",

"remainingEstimate": "1h",

},

"components":components,

"priority":priority,

"versions":versions,

"labels":["【第三方测试】"],

}

return jirabug1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

331

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

def convert2JiraSummary(bug=None):

#截取bug内容的操作和现象,拼为summary

summary = "【第三方No:"+'%d' %bug['No.']+"】" + bug['Bug内容'][bug['Bug内容'].index("操作"):bug['Bug内容'].index("期待值")]

summary = summary.replace('\n',' ')

return summary1

2

3

4

5

61

2

3

4

5

6

def convert2JiraDescription(bug=None):

description='编号:' + '%d' %bug['No.'] + '\n' + bug['Bug内容'] + '\n\n' + bug['补充说明'] + '\n\n' + '评价担当者:' + bug['评价担当者']

return description1

2

3

41

2

3

4

def convert2JiraComponents(bug=None):

#jira中要预先设置好component,并设好开发负责人,这样创建issue时可以自动指派assignee

#'components':[{'name': '模块一'}]

component_dict={

'component 1':'模块一',

'component 2':'模块二',

'component 3':'模块三',

}

p={}

p['name']=component_dict[bug['测试机能']]

components=[]

components.append(p)

return components1

2

3

4

5

6

7

8

9

10

11

12

13

141

2

3

4

5

6

7

8

9

10

11

12

13

14

def convert2JiraPriority(bug=None):

#'Priority': {'name': 'Major'}

priority_dict={

'S':'Blocker',

'A':'Critical',

'B':'Major',

'C':'Minor',

}

priority={}

priority['name']= priority_dict[bug['错误等级']]

return priority1

2

3

4

5

6

7

8

9

10

11

121

2

3

4

5

6

7

8

9

10

11

12

def convert2JiraVersions(bug=None):

#issue.update(versions=[{"name":'V4.0.0.2'}])

r= re.compile('V+.*.*.*')

v = r.findall(bug['测试Version'])

p={}

p['name']= v[0]

versions=[]

versions.append(p)

return versions1

2

3

4

5

6

7

8

91

2

3

4

5

6

7

8

9

附:buglist样式,该sheet的名称为“buglist”

76761294_1

首先,需要安装 openpyxl 和 jira-python 两个库: ```python pip install openpyxl jira ``` 然后,按照以下步骤编写代码: 1. 导入库和模块: ```python import openpyxl from jira import JIRA ``` 2. 打开 Excel 文件: ```python workbook = openpyxl.load_workbook('testcases.xlsx') worksheet = workbook['Sheet1'] ``` 3. 创建 JIRA 连接: ```python options = {'server': 'https://your-jira-instance-url'} jira = JIRA(options, basic_auth=('username', 'password')) ``` 4. 遍历 Excel 表格,读取用例信息,并创建用例实例: ```python for row in worksheet.iter_rows(min_row=2): summary, description, priority, status = [cell.value for cell in row] issue_dict = { 'project': {'key': 'PROJECT_KEY'}, 'summary': summary, 'description': description, 'issuetype': {'name': 'Test Case'}, 'priority': {'name': priority}, 'status': {'name': status} } new_issue = jira.create_issue(fields=issue_dict) ``` 其中,`PROJECT_KEY` 是项目的缩写,需要替换成实际项目的缩写。`summary` 是用例标题,`description` 是用例描述,`priority` 是用例优先级,`status` 是用例状态。根据需要,可以在 `issue_dict` 中添加其他字段。 5. 关闭连接: ```python jira.close() ``` 完整代码示例: ```python import openpyxl from jira import JIRA workbook = openpyxl.load_workbook('testcases.xlsx') worksheet = workbook['Sheet1'] options = {'server': 'https://your-jira-instance-url'} jira = JIRA(options, basic_auth=('username', 'password')) for row in worksheet.iter_rows(min_row=2): summary, description, priority, status = [cell.value for cell in row] issue_dict = { 'project': {'key': 'PROJECT_KEY'}, 'summary': summary, 'description': description, 'issuetype': {'name': 'Test Case'}, 'priority': {'name': priority}, 'status': {'name': status} } new_issue = jira.create_issue(fields=issue_dict) jira.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值