1 Star 1 Fork 1

ZHAIM/Xmind2Excel

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
convert.py 5.94 KB
一键复制 编辑 原始数据 按行查看 历史
ZHAIM 提交于 2022-03-06 21:02 . V1
# !/Desktop/codearea/pytestlearn2/venv/bin/python3.9
"""
@Author:Zhming
@Project:XmindtoExcelGUI
@File:convert
@Software:PyCharm
@Date:2022/3/3
"""
import xlwt
from xmindparser import xmind_to_dict
def handle_xmind(filename):
out = xmind_to_dict(filename)
return out[0]['topic']['topics']
def handle_path(topic, topics_lists, title):
"""
遍历解析后的xmind数据
:param topic:xmind解析后的数据
:param topics_lists:从topic提取的数据存放的列表
:param title:从topic提取的title
:return:
"""
# title去除首尾空格
title = title.strip()
# 如果调用本方法,则concatTitle赋值为第一个层级的名称(所属模块名称)
if len(title) == 0:
concatTitle = topic['title'].strip()
else:
concatTitle = title + '|' + topic['title'].strip()
# 如果第一层下没有数据了,那么就把第一层级的名称填加到topics_lists里
if topic.__contains__('topics') == False:
topics_lists.append(concatTitle)
# 如果有,那么就遍历下一个层级......这样就把所有title都写到topics_lists里了
else:
for d in topic['topics']:
handle_path(d, topics_lists, concatTitle)
def handle_title(topics):
"""
判断是title的类别:所属模块,所属子模块,用例,操作步骤,预期结果,备注
:param topics: 传入topic的列表
:return: 经过处理的字典,{'model': '...', 'sub_model': '...', 'case': '...', 'step': '...', 'expect': '...'}
"""
list = []
for l in topics:
dict = {}
for i in l:
if "模块" in i.split("_"):
dict["model"] = i[3:]
elif "子模块" in i.split("_"):
dict["sub_model"] = i[4:]
elif "测试用例:" in i or "测试用例:" in i:
dict["case"] = i[5:]
elif "步骤:" in i or "步骤:" in i:
dict["step"] = i[3:]
elif "预期:" in i or "预期:" in i:
dict["expect"] = i[3:]
elif "备注:" in i or "备注:" in i:
dict["remark"] = i[3:]
else:
try:
dict["case"] = dict["case"] + "_" + i
except:
pass
list.append(dict)
return list
def handle_topics(topics):
index = 0
title_lists = []
# 遍历第一层级的分支(所属模块)
for h in topics:
topics_lists = []
handle_path(h, topics_lists, '')
# print("这个是lists,", topics_lists)
# 取出topics下所有的title放到1个列表中
for j in range(0, len(topics_lists)):
title_lists.append(topics_lists[j].split('|'))
return title_lists
def write_to_temp1(list, excelname):
"""
把解析的xmind文件写到xls文件里
使用基础模板
:param list: 经过处理的字典,格式 [{'model': '...', 'sub_model': '...', 'case': '...', 'step': '...','expect': '.'},{...},...]
:param excelname: 输出的excel文件路径,文件名固定为:xmind文件名.xls
:return:
"""
f = xlwt.Workbook()
# 生成excel文件
sheet = f.add_sheet('测试用例', cell_overwrite_ok=True)
row0 = ['序号', '所属模块', '所属子模块', '测试用例', '执行步骤', '预期结果', '备注']
# 生成第一行中固定表头内容
for i in range(0, len(row0)):
sheet.write(0, i, row0[i])
# 把title写入xls
for n in range(0, len(list)):
# 第一列的序号
sheet.write(n + 1, 0, n + 1)
for index, d in enumerate(list):
# 第二列及之后的用例数据
try:
sheet.write(index + 1, 1, d["model"])
except:
pass
try:
sheet.write(index + 1, 2, d["sub_model"])
except:
pass
try:
sheet.write(index + 1, 3, d["case"])
except:
pass
try:
sheet.write(index + 1, 4, d["step"])
except:
pass
try:
sheet.write(index + 1, 5, d["expect"])
except:
pass
try:
sheet.write(index + 1, 6, d["remark"])
except:
pass
f.save(excelname)
def write_to_temp_jira(list, excelname):
"""
把解析的xmind文件写到xls文件里
使用JIRA模板
:param list: 经过处理的字典,格式 [{'model': '...', 'sub_model': '...', 'case': '...', 'step': '...','expect': '.'},{...},...]
:param excelname: 输出的excel文件路径,文件名固定为:xmind文件名.xls
:return:
"""
f = xlwt.Workbook()
# 生成excel文件
sheet = f.add_sheet('测试用例', cell_overwrite_ok=True)
row0 = ['Team', 'TCID', 'Pre_Condition', '任务分类-TOC', 'Issue_type', 'Test-Set6','Summary', 'Component', 'Description',
'Fix_Version', 'Priority', 'Lables', 'Test_type', 'assignee', 'Step', 'Data', 'Expected_Result']
# 生成第一行中固定表头内容
for i in range(0, len(row0)):
sheet.write(0, i, row0[i])
# 把title写入xls
for index, d in enumerate(list):
# 第二列及之后的用例数据
sheet.write(index + 1, 3, "用例设计")
sheet.write(index + 1, 4, "Test")
try:
sheet.write(index + 1, 6, d["case"])
except:
pass
if d.get("model") and d.get("sub_model"):
sheet.write(index + 1, 11, d["model"] + '_' + d["sub_model"])
elif d.get("model") and d.get("sub_model") == None:
sheet.write(index + 1, 11, d["model"])
elif d.get("model") == None and d.get("sub_model"):
sheet.write(index + 1, 11, d["sub_model"])
else:
pass
try:
sheet.write(index + 1, 12, "Manual")
except:
pass
try:
sheet.write(index + 1, 14, d["step"])
except:
pass
try:
sheet.write(index + 1, 16, d["expect"])
except:
pass
f.save(excelname)
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/zhaim/xmind2-excel.git
git@gitee.com:zhaim/xmind2-excel.git
zhaim
xmind2-excel
Xmind2Excel
master

搜索帮助