最近接到一个领导需求,将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将xmind脑图转成excel用例(一)的更多相关文章

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

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

  2. python中将xmind转成excel

    需求:最近公司项目使用tapd进行管理,现在遇到的一个难题就是,使用固定的模板编写测试用例,使用excel导入tapd进行测试用例管理,觉得太过麻烦,本人一直喜欢使用导图来写测试用例,故产生了这个工具 ...

  3. Python实现XMind测试用例快速转Excel用例

    转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/c2d10f21.html 你好,我是测试蔡坨坨. 今天分享一个Python编写的小工具,实现XMind测试用例转Excel用 ...

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

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

  5. 无需会员将有道云笔记脑图转换xmind

    我的烦恼 有道云笔记有脑图功能,我平时经常用到,之所以很少用到其他脑图工具,是因为我一直用有道云笔记写笔记.因此编辑脑图和查看脑图比较方便,但是需要将脑图导出的时候目前只支持图片和xmind,但是需要 ...

  6. text image & 思维脑图 & xmind

    text image & 思维脑图 text-image 图片读 rgb 值->灰度值->字符; rgb->灰度值的公式 google 一下就有,灰度值传字符部分,从灰度值从 ...

  7. 用Python解析XMind

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

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

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

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

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

随机推荐

  1. SpringBoot 整合 Elasticsearch深度分页查询

    es 查询共有4种查询类型 QUERY_AND_FETCH: 主节点将查询请求分发到所有的分片中,各个分片按照自己的查询规则即词频文档频率进行打分排序,然后将结果返回给主节点,主节点对所有数据进行汇总 ...

  2. 前端技术之:常用webpack插件

    1.html-webpack-plugin Simplifies creation of HTML files to serve your webpack bundles.   主页地址: https ...

  3. win10+MinGw+ffmpeg 编译

    一.安装MinGw+msys 下载 mingw-get-setup.exe 并安装,安装完成会弹出以下界面. 选中红色框几个选项,点击Installation->Apply Changes 进行 ...

  4. Windows下内网渗透常用命令总结

    域内信息收集常用命令 net group /domain //获得所有域用户组列表 net group zzh /domain //显示域中zzh组的成员 net group zzh /del /do ...

  5. Head First设计模式——单例模式

    单例模式是所有设计模式中最简单的模式,也是我们平常经常用到的,单例模式通常被我们应用于线程池.缓存操作.队列操作等等. 单例模式旨在创建一个类的实例,创建一个类的实例我们用全局静态变量或者约定也能办到 ...

  6. 算法编程题积累(4)——腾讯笔试"有趣的数字“问题

    本题基本思路:先对原序列进行排序,再根据不同情况采用不同算法. 首先差最大的对数最好求:用最小的数的个数 × 最大的数的个数即可. 接着求差最小的对数: 1.当序列中无重复关键字时:可知最小差必然产生 ...

  7. linux系统LAMP环境部署

    一.安装虚拟机 二.安装CentOS7 注意:以下安装,用的root权限. 三.安装Apache 1.安装 yum -y install httpd 2.开启apache服务 systemctl st ...

  8. JVM,JDK,JRE

    JVM,JDK,JRE 什么是JVM Java 虚拟机. 这个名词由Java和虚拟机前后两部分组成. 它有和其他虚拟机共性:JVM是通过软件模拟的计算机系统. 它也有自己的特性:JVM使用软件模拟的指 ...

  9. [TCP] TCP协议族的学习 and TCP协议

    1.TCP协议族这个大家庭,每个协议在OSI5层模型中所处的位子 其中,网络层里的 ICMP = Internet Control Message Protocol,即因特网控制报文协议, IGMP ...

  10. PHP 向数组头部插入数据

    PHP 向数组头部插入数据 函数: array_unshift() 示例: $s = array('a' => 0, 'b' => 3); array_unshift($s, '5'); ...