python实现xmind转excel_使用Python将xmind脑图转成excel用例(一)

最近接到一个领导需求,将xmind脑图直接转成可以导入的excel用例,并且转换成gui可执行的exe文件,方便他人使用。

因为对Python比较熟悉,所以就想使用Python3来实现这个功能,先理一下思路,首先要将xmind转换成Python可用的数据格式,正好找到了一个xmindparser库可以做这个事情,然后就好办了,用xlwt库写成xls文件,再用Python自带的gui库 tkinter来写 gui界面,最后用pyinstaller来打包。

计划分两个py文件来写,一个文件写excel ,一个文件写gui界面,因为需要导入的字段比较多,而且导入的格式有严格的要求,所以写excel的逻辑还是有点复杂的,所以我们确定xmind的文件有相应的格式来写,测试编号 测试需求 测试用例标题 测试用例执行步骤 测试用例预期结果 测试用例预置条件都要按照相应的格式来。格式如图

通过xmindparser解析出来的格式是这样的,是Python的字典加列表的格式

从这里我们可以分析出来xmind的格式的两个属性是我们用的,title 和topics ,其中title是我们要的内容,topics是内容的个数,这里可以封装两个函数来用,代码我贴出来,因为要求的xls格式不一样

所以具体的逻辑还要具体的去写,我是按照我们工具要求的excel格式来写的,可以给大家参考一下,你们需要什么格式可以在write_excel函数里面调整逻辑.

下一篇再把tkinter设计的gui代码以及如何用pyintaller打包成exe贴上来。注:以下代码都是在Python3环境下的

from xmindparser import xmind_to_dict

import re

import xlwt

class xmind_to_xls():

def xmind_num(self,value):

"""获取xmind标题个数"""

try:

return len(value['topics'])

except KeyError:

return 0

def xmind_title(self,value):

"""获取xmind标题内容"""

return value['title']

def xmind_cat(self,filename):

'''调试函数,打印内容用的'''

self.out = xmind_to_dict(filename)

self.story = self.out[0]['topic']['topics']

self.num=len(self.story)

print(self.out)

print(self.out[0]['topic']['title'])

return self.story,self.num

def write_excel(self,xmind_file,servicename='',editionname='',performer=''):

'''生成excel文件函数'''

self.f=xlwt.Workbook()

self.sheet1 =self.f.add_sheet('sheet1',cell_overwrite_ok=True)

self.row0 = ["storyid", '需求名称', '测试用例名称', '执行步骤', '预期结果', '服务名称', '版本', '执行人员']

#生成第一行

for i in range(0,len(self.row0)):

self.sheet1.write(0,i,self.row0[i])

self.out = xmind_to_dict(xmind_file)

self.xls_name=self.out[0]['topic']['title']

self.story = self.out[0]['topic']['topics']

self.storynum = len(self.story)

j=1 #用例计算器

z = 0 # 用例结果数计数器

for i in range(0, self.storynum):

self.storyname = self.story[i]['title']

print(self.storyname)

self.regex_str = ".*[\[【](.+?)[\]】].*"

self.storyid_reg = re.match(self.regex_str, self.storyname)

if self.storyid_reg:

self.storyid=self.storyid_reg.group(1)#正则取出用例编号

#print(self.storyid_reg.group(1))

self.testcase_num=self.xmind_num(self.story[i]['topics'][0])

for k in range(0,self.testcase_num):

self.testcase=self.story[i]['topics'][0]['topics'][k]

self.testcase_name =self.xmind_title(self.testcase)

self.testcase_stepnum=self.xmind_num(self.testcase) #每个用例的步骤数量

self.sheet1.write(k + i + z + j, 2, self.testcase_name)

self.sheet1.write(k + i + z + j, 0, self.storyid)

self.sheet1.write(k + i + z + j, 1, self.storyname)

self.sheet1.write(k + i + z + j, 5, servicename)

self.sheet1.write(k + i + z + j, 6, editionname)

self.sheet1.write(k + i + z + j, 7, performer)

for x in range(0,self.testcase_stepnum):

self.testcase_step=self.testcase['topics'][x]

self.teststep_title=self.xmind_title(self.testcase_step) #用例步骤名称

self.teststep_num=self.xmind_num(self.testcase_step) #用例步骤个数

if self.teststep_num != 0:

for y in range(0,self.teststep_num):

self.test_results=self.testcase_step['topics'][y]

self.test_result=self.xmind_title(self.test_results)#用例结果

self.sheet1.write(k + i + z + j+y+1, 3, self.teststep_title)

self.sheet1.write(k + i + z + j + y+1, 4, self.test_result)

z = z + y+1

else:

self.test_result=' '

self.sheet1.write(k + i + z + j+1 , 3, self.teststep_title)

self.sheet1.write(k + i + z + j+1 , 4, self.test_result)

z = z + 1

j=j+k

self.f.save(self.xls_name+'.xls') #xls名称取xmind主题名称

if __name__ == '__main__':

xmind_file = "C:\\Users\\Administrator\\Desktop\\版本测试.xmind" # xmind文件

servicename='aa'

editionname='bb'

performer='cc'

#xmind_to_xls().write_excel(xmind_file,servicename,editionname,performer)

xmind_to_xls().xmind_cat(xmind_file)

python pandas模块简单使用(读取excel为例)

第一步:模块安装 pip install pandas 第二步:使用(单个工作表为例) 说明:如果有多个工作表,那么只要指定sheetname=索引,(第一个工作表为0,第二个工作表为1,以此类推) ...

Python 文本(txt) 转换成 EXCEL(xls)

#!/bin/env python # -*- encoding: utf-8 -*- #------------------------------------------------------- ...

用Python解析XMind

本文来自网易云社区 作者:孙圣翔 转自:http://shengxiang.me/article/35/python-parse-xmind.html XMind是画思维脑图很好的工具,正好组里有个需 ...

提效工具-python解析xmind文件及xmind用例统计

现状 每个公司都有一个维护测试case的系统,有自研的也有买的,比如QC, 禅道等等,QA往往习惯使用xmind等思维导图工具来编写测试用例,因为思路清晰,编写方便,那么这就有一个问题,大多公司要求所 ...

Java集合总结【面试题+脑图】,将知识点一网打尽!

前言 声明,本文用的是jdk1.8 花了一个星期,把Java容器核心的知识过了一遍,感觉集合已经无所畏惧了!!(哈哈哈....),现在来总结一下吧~~ 回顾目录: Collection总览 List集 ...

Python解析Xmind工具

使用Xmind写用例 使用Python解析Xmind,统计用例个数 代码: from xmindparser import xmind_to_dict import tkinter as tk fro ...

EasyUseCase 一款脑图转化 Excel 测试用例工具 (1.2 版本升级)

EasyUseCase 本工具由本人自主开发.经过内部实践有效提升测试用例编写效率200% 覆盖率可度量.利用读取xmind软件图表转换符合国人基本需求的测试用例,让手动写Excel用例的日子过去,发 ...

尚硅谷周阳老师-redis脑图课件

因为脑图原件是.mmap格式,使用wps和xmind打开都会有格式不兼容的问题,这里我们可以使用mindmanager存为html5交互式格式, 提供在线阅读.因为阿里云学生服务器带宽有限,这里打开加 ...

《Reactive_MircService_Architecture》 脑图

Reactive_MircService_Architecture Lightbend CTO的50页的小册子,对响应式系统以及微服务架构介绍非常全面,整理了一个脑图来先.

随机推荐

JAVAFX纯手写布局

主页面效果: 第一栏的效果: 工程目录: package MessageBean; /** * * @author novo */ public class Message { private Str ...

14.python笔记之paramiko

作者:刘耀 博客:www.liuyao.me 博客园:www.cnblogs.com/liu-yao 转载请注明 一,介绍 1.使用paramiko可以很好的解决以上问题,比起前面的方法,它仅需要在本 ...

怎么在ubuntu上使用pidgin登陆QQ

1.Ubuntu pidgin安装webqq 首先安装webqq的通讯协议: sudo add-apt-repository ppa:lainme/pidgin-lwqq sudo apt-get u ...

XML为数据库进行增删改查(实例)

//增删改查文件 package xml2; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.Fi ...

JS知识点概况

1.什么是JavaScript a)   JavaScript 被设计用来向 HTML 页面添加交互行为. b)   JavaScript 是一种脚本语言(脚本语言是一种轻量级的编程语言). c)   ...

jQuery 1.10.2 and 2.0.3 Released

t’s nearly Independence Day here in the USA, so we’re delivering something fresh off the grill: jQue ...

jmeter从外部文件取值问题,如果文件中的参数值为纯数字形式的,jmeter会默认将其识别成int型数据

如果你通过CSV Data Set Config或者_StringFromFile函数来参数化你的请求,需要特别注意当参数为纯数字时,jmeter会默认将其识别成int型数据,说明jmeter并不是默 ...

浅谈web移动端适配问题

一.布局方案 目前在解决移动端页面适配问题方案选择上,目前用得比较多是百分比布局,弹性布局flex,rem布局,本文将重点跟大家探讨rem布局. 二.viewport 在介绍rem布局之前,首先跟大家 ...

手机端仿ios的银行下拉脚本五

代码

DCGAN 论文简单解读

DCGAN的全称是Deep Convolution Generative Adversarial Networks(深度卷积生成对抗网络).是2014年Ian J.Goodfellow 的那篇开创性的 ...

你可能感兴趣的:(python实现xmind转excel_使用Python将xmind脑图转成excel用例(一))