效果如下:
源xmind文件:
转换后Excel文件如下:
代码如下:
import xmindparser
import json
import xlwt
index = 1
col = 0
xmindparser.config = {
'showTopicId': False,
'hideEmptyValue': True,
'showStructure': False,
'showRelationship': True
}
# 读取XMind文件
def readXmindFile(filePath):
print(filePath)
content = xmindparser.xmind_to_dict(filePath)
print(content)
print_json(content[0])
return content
def print_json(data):
print(json.dumps(data, sort_keys=True, indent=4, separators=(', ', ': '), ensure_ascii=False))
# 创建xlsx文件
def getCaseXlsxFile(filename):
workBook = xlwt.Workbook(filename)
sheet = workBook.add_sheet('工作表', cell_overwrite_ok=True)
sheet.write(0, 0, '文件夹')
sheet.write(0, 1, '用例标题')
sheet.write(0, 2, '优先级')
sheet.write(0, 3, '用例类型')
sheet.write(0, 5, '冒烟用例')
sheet.write(0, 6, '前置条件')
sheet.write(0, 7, '操作步骤')
sheet.write(0, 8, '预期结果')
return (workBook,sheet)
# 写入用例
def writeCases(filePath, workBook, sheet, fileName):
content = readXmindFile(filePath)
topic = content[0]['topic']
# for func in topic['topics']:
# try:
# if len(func['topics']) > 0:
# titles = func['topics']
# writeTitle(func['title'], sheet, row)
# for title in titles:
# print(title)
# writeTitle(title['title'], sheet, row)
# try:
# if len(title['topics']) > 0:
# steps = title['topics']
# for step in steps:
# print(step)
# writeTitle(step['title'], sheet, row)
# try:
# if len(step['topics']) > 0:
# results = step['topics']
# for result in results:
# print(result)
# writeTitle(result['title'], sheet, row)
# else:
# break
# except:
# break
# else:
# break
# row += 1
# except:
# break
findData(topic['topics'], sheet)
# else:
# break
# except:
# break
workBook.save(fileName)
# 读取xmind数据
def findData(topics, sheet):
print(topics)
global index
global col
for topic in topics:
print(topic)
try:
if len(topic['topics']) > 0:
titles = topic['topics']
print(topic['title'])
writeTitle(topic['title'], sheet, index)
findData(titles, sheet)
except:
print('title' + topic['title'])
writeTitle(topic['title'], sheet, index)
index += 1
# 将数据写入Excel
def writeTitle(title, sheet, row):
if '预期结果' in title:
sheet.write(row, 8, title[5:len(title)])
elif '前提' in title:
sheet.write(row, 6, title[3:len(title)])
elif '步骤' in title:
sheet.write(row, 7, title[3:len(title)])
elif '级别' in title:
sheet.write(row, 2, title[3:len(title)])
elif '是否冒烟' in title:
sheet.write(row, 5, title[5:len(title)])
elif '名称' in title or '标题' in title:
sheet.write(row, 1, title[3:len(title)])
elif '验证' in title:
sheet.write(row, 10, title)
# else:
# sheet.write(row, col, title)
sheet.write(row, 3, '功能测试')
if __name__ == '__main__':
filePath = '测试.xmind'
fileName = '测试.xlsx'
data = getCaseXlsxFile(fileName)
wb = data[0]
sheet = data[1]
writeCases(filePath, wb, sheet, fileName)