xmind用例转excel

前言

废话不多说,因为工作需要,写这个工具就是为了方便编写以及上传测试用例

由于用例需要上传禅道,还需要按照禅道上的Excel模板来写,但是之前用脑图写习惯了,再加上强迫症,用禅道下载的Excel模板写非常难受,于是就百度找教程并借鉴部分代码。

实现原理:首先制定一套xmind模板规则,然后解析xmind用例数据,然后处理数据,写入Excel模板中

1、定制ximd模板规则

所属模块-相关需求-用例标题-前置条件-操作步骤-预期结果

没有前置条件时可以忽略

2、xmind数据解析(吐槽:俄罗斯套娃一样)

写好了xmind模板(demo)

首先要提取Xmind文件分支内容

[
	{
		'title': '画布1',
		'topic': {
			'title': 'A',
			'topics': [
				{
					'title': 'B1'
				},
				{
					'title': 'B2',
					'topics': [
						{
							'title': 'C1'
						},
						{
							'title': 'C2'
						}
					]
				},
				{
					'title': 'B3'
				}
			]
		},
		'structure': 'org.xmind.ui.map.unbalanced'
	}
]

内容装在一个list里,字典最外层title为“画布1”,

topic装有我们需要的内容(可以看出其他位置叫topics),

这是xmind文件中没有的,经验证这是个固定值,可以忽略。

然后通过取list,A是字典中value值,key为title,其子节点装在topics的分支中。

处理后是这样,最外层是dict:

{
	'title': 'A',
	'topics': [
		{
			'title': 'B1'
		},
		{
			'title': 'B2',
			'topics': [
				{
					'title': 'C1'
				},
				{
					'title': 'C2'
				}
			]
		},
		{
			'title': 'B3'
		}
	]
}

需要一层层取子节点才可以得到我们想要的A\B2\C1、A\B2\C2,

节点值永远在title里,而子节点却在dict、list里的dict里,

而且子节点里有的只有一个title,有的有一个title加一个topics,

不难发现,有topics的是还有其子节点的

处理数据的逻辑大概是下面这样的:

如果  输入字典:

    当字典只有有title时:

      操作1

    当字典有title和topics时:

      操作2

如果  输入list:

    遍历list里的字典:

      对每个字典进行操作3

如果  输入的既不是字典也不是list:

    输出值

3、写入Excel

处理后的data数据:

('所属模块#1', '相关需求#1', '用例标题:B1', '无', '操作步骤', '预期结果', '', 1, '功能测试') 
('所属模块#1', '相关需求#1', '用例标题:B1', '无', '操作步骤', '预期结果', '', 1, '功能测试') 
('所属模块#1', '相关需求#1', '用例标题:B2', '前置条件', '操作步骤', '预期结果', '', 1, '功能测试') 
('所属模块#1', '相关需求#1', '用例标题:B2', '前置条件', '操作步骤', '预期结果', '', 1, '功能测试') 

写入模板文件:

from openpyxl import load_workbook
def save_excel(self,template, data, new_file):
    '''
        把数据写入模板用例中
        :param  template: Excel用例模板文件
        :param data: xmind转化后的data数据
        :param new_file: 保存至新的Excel表
        :return:
        '''
    wb = load_workbook(template)
    sheet = wb.active
    for i in data:
        print(i)
        self.color_handle(str(i))
        sheet.append(i)
        wb.save(new_file)
        print("运行结束!")

4、pyqt5可视化界面

5、写入data后的Excel用例文件

最后上传Excel用例至禅道即可

posted @ 2021-09-11 19:51  者諹  阅读(563)  评论(0编辑  收藏  举报