使用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 相关文章推荐
Python中利用sqrt()方法进行平方根计算的教程
May 15 Python
python实现爬虫下载美女图片
Jul 14 Python
Python的语言类型(详解)
Jun 24 Python
PyQt5每天必学之布局管理
Apr 19 Python
python删除文本中行数标签的方法
May 31 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 Python
python 实现一个反向单位矩阵示例
Nov 29 Python
pytorch 修改预训练model实例
Jan 18 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
Feb 29 Python
Python基于当前时间批量创建文件
May 07 Python
python Tornado框架的使用示例
Oct 19 Python
python 基于UDP协议套接字通信的实现
Jan 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
PHP利用imagick生成组合缩略图
2016/02/19 PHP
JavaScript中的Document文档对象
2008/01/16 Javascript
js分解url参数(面向对象-极简主义法应用)
2012/08/09 Javascript
jquery的ajax简单结构示例代码
2014/02/17 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
2015/03/05 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
2016/01/07 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
在vue项目中,将juery设置为全局变量的方法
2018/09/25 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
python字典多条件排序方法实例
2014/06/30 Python
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
Python向日志输出中添加上下文信息
2017/05/24 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
Python计算时间间隔(精确到微妙)的代码实例
2019/02/26 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
python deque模块简单使用代码实例
2020/03/12 Python
资产经营总监岗位职责范文
2013/12/01 职场文书
心得体会开头
2014/01/01 职场文书
六一儿童节活动策划方案
2014/01/27 职场文书
优秀小学生家长评语
2014/01/30 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
绘画专业自荐信范文
2014/02/23 职场文书
平安建设工作方案
2014/06/02 职场文书
禁止酒驾标语
2014/06/25 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
法学专业求职信范文
2015/03/19 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书
家长必看:义务教育,不得以面试 评测等名义选拔学生
2019/07/09 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers
Python import模块的缓存问题解决方案
2021/06/02 Python
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android