使用Python将xmind脑图转成excel用例的实现代码(一)


Posted in Python onOctober 12, 2020

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

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

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

使用Python将xmind脑图转成excel用例的实现代码(一)

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

使用Python将xmind脑图转成excel用例的实现代码(一)

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用例的实现代码(一)的文章就介绍到这了,更多相关Python xmind转excel用例内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Django中管理Users和Permissions以及Groups的方法
Jul 23 Python
详解Python的Django框架中的中间件
Jul 24 Python
一个基于flask的web应用诞生(1)
Apr 11 Python
python三方库之requests的快速上手
Mar 04 Python
Python中低维数组填充高维数组的实现
Dec 02 Python
django商品分类及商品数据建模实例详解
Jan 03 Python
Python re正则表达式元字符分组()用法分享
Feb 10 Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 Python
Scrapy爬虫文件批量运行的实现
Sep 30 Python
Python高并发和多线程有什么关系
Nov 14 Python
Pytest中skip和skipif的具体使用方法
Jun 30 Python
详解Python内置模块Collections
Mar 22 Python
使用python把xmind转换成excel测试用例的实现代码
Oct 12 #Python
Python Sqlalchemy如何实现select for update
Oct 12 #Python
浅析PyCharm 的初始设置(知道)
Oct 12 #Python
Pandas替换及部分替换(replace)实现流程详解
Oct 12 #Python
Django windows使用Apache实现部署流程解析
Oct 12 #Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 #Python
如何实现一个python函数装饰器(Decorator)
Oct 12 #Python
You might like
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
php实现的rc4加密解密类定义与用法示例
2018/08/16 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
jquery 常用操作方法
2010/01/28 Javascript
js下获取div中的数据的原理分析
2010/04/07 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
JS简单添加元素新节点的方法示例
2018/02/10 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
使用JS来动态操作css的几种方法
2019/12/18 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
Python实现高效求解素数代码实例
2015/06/30 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
HTML5中图片之间的缝隙完美解决方法
2017/07/07 HTML / CSS
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
SQL Server面试题
2016/10/17 面试题
如何清空Session
2015/02/23 面试题
大学军训感言300字
2014/03/09 职场文书
管理标语大全
2014/06/24 职场文书
五年级上册复习计划
2015/01/19 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
抢劫罪辩护词
2015/05/21 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
社区宣传标语口号
2015/12/26 职场文书
外出培训学习心得体会
2016/01/18 职场文书
JavaScript 实现页面滚动动画
2021/04/24 Javascript
python中redis包操作数据库的教程
2022/04/19 Python