背景
在一些快速迭代的团队中,测试工程师没有时间整理完整的测试用例,或者没有专门的测试用例管理工具(比如testlink,禅道,JIRA等),一些测试工程师会使用xmind的思维导图来记录测试用例。这种方式虽然可以很清晰的看到测试点,但是弊端就是不方便标记结果。
我就在团队中遇到了使用xmind来记录测试用例的情况,在执行这些用例的时候就想要转成excel,方便在测试过程中随时标记结果,生成测试报告。
但是,xmind转excel需要会员,那对于我这种本不富裕的测试同学来说,就只好自力更生,自己转。
xmind转换效果
xmind文件
Excel文件
支持一下两种格式,默认使用格式一。
格式一:合并单元格布局
格式二:枢纽布局
代码实现
暂时只支持一个画布上一个父主题的情况,xmind中的note
,callout
等暂时不支持,会不写入excel中。以下代码转xmind到excel时会按照合并单元格的样式展示。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from xmindparser import xmind_to_dict
from openpyxl import Workbook, load_workbook
from openpyxl.styles import Alignment
def write_sub_note_to_excel(datadict, cur='', excel=None):
'''
把每个最终节点,带路径写入excel
:param datadict:
:param cur:
:param excel:
:return:
'''
for k, v in datadict.items():
if type(v) is dict:
write_sub_note_to_excel(v, cur, excel)
elif isinstance(v, list):
for i in v:
if isinstance(i, dict):
write_sub_note_to_excel(i, cur, excel)
else:
if not 'topics' in datadict and k == 'title':
wb = load_workbook(excel)
ws = wb.active
ws.append((cur + '-' + v).split('-')[1:])
wb.save(excel)
print("{0} : {1}".format(k, cur + '-' + v))
cur = cur + '-' + v
def format_excel(excelfile):
'''
调整excel格式,做合并单元格
:param excelfile:
:return:
'''
wb = load_workbook(excelfile)
ws = wb.active
for cols in ws.iter_cols(max_row=ws.max_row, max_col=ws.max_column):
srow = cols[0]
for col in cols[1:]:
if col.value == srow.value:
if col == cols[ws.max_row - 1] and col.value is not None:
ws.merge_cells(':'.join([srow.coordinate, col.coordinate]))
srow.alignment = Alignment(horizontal="center", vertical="center")
else:
if srow.value is not None:
# print(':'.join([srow.coordinate, col.column_letter + str(col.row - 1)]))
ws.merge_cells(':'.join([srow.coordinate, col.column_letter + str(col.row - 1)]))
srow.alignment = Alignment(horizontal="center", vertical="center")
srow = col
wb.save(excelfile)
if __name__ == '__main__':
import sys
xmind_file = sys.argv[1] # 输入D:\XX测试用例.xmind
xmind_dict = xmind_to_dict(xmind_file)
print(xmind_dict)
# 生成的excel文件名
wb = Workbook()
excelfile = xmind_file.replace('.xmind', '.xlsx')
wb.save(excelfile)
wb = load_workbook(excelfile)
ws = wb.active
# xmind解析后的dict格式如下:
# [{'title': '画布 1', 'topic': {'title': 'XX测试用例', 'topics': []}}]
# 所以需要忽略到第一层的 '画布 1',直接从topic里内容开始转
top_topic = xmind_dict[0]['topic']
write_sub_note_to_excel(top_topic, excel=excelfile)
# 需要格式二:枢纽布局来逐条查阅的小伙本,直接把下面这行format_excel注释掉即可
format_excel(excelfile)
可执行文件下载地址
给不会Python3或者不想尝试的小伙伴也准备了个可以在Windows10上运行的可执行文件。打开CMD,执行exe即可。
D:\>xmind2excel.exe XX测试用例.xmind
链接:https://pan.baidu.com/s/1HOtUcX3dr8msntEXGMe1gw
提取码:kcej
TODO
- 支持标注和笔记,写入excel中