使用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 getopt模块处理命令行选项实例
May 13 Python
pycharm 使用心得(六)进行简单的数据库管理
Jun 06 Python
python 文件操作api(文件操作函数)
Aug 28 Python
python 查找字符串是否存在实例详解
Jan 20 Python
Python2包含中文报错的解决方法
Jul 09 Python
Python3实现计算两个数组的交集算法示例
Apr 03 Python
CentOS7安装Python3的教程详解
Apr 10 Python
python 杀死自身进程的实现方法
Jul 01 Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 Python
python实现打砖块游戏
Feb 25 Python
Python如何实现在字符串里嵌入双引号或者单引号
Mar 02 Python
python安装mysql的依赖包mysql-python操作
Jan 01 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
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
使用js简单实现了tree树菜单
2013/11/20 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
jquery中 $.expr使用实例介绍
2014/06/09 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
js实现div层缓慢收缩与展开的方法
2015/05/11 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
浅析Bootstrap验证控件的使用
2016/06/23 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
2017/04/14 jQuery
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
从源码角度来回答keep-alive组件的缓存原理
2021/01/18 Javascript
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
django中forms组件的使用与注意
2019/07/08 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
Python如何使用函数做字典的值
2019/11/30 Python
numpy 声明空数组详解
2019/12/05 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
Python调用SMTP服务自动发送Email的实现步骤
2021/02/07 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
html5利用canvas绘画二级树形结构图的示例
2017/09/27 HTML / CSS
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
孝老爱亲模范事迹材料
2014/05/25 职场文书
春晚观后感
2015/06/11 职场文书
关于保护环境的建议书
2019/06/24 职场文书