使用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和C语言混合编程实例
Jun 04 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
Python中使用asyncio 封装文件读写
Sep 11 Python
python Crypto模块的安装与使用方法
Dec 21 Python
Python视频爬虫实现下载头条视频功能示例
May 07 Python
Python实现的爬虫刷回复功能示例
Jun 07 Python
python实现AES加密和解密
Mar 27 Python
PYQT5实现控制台显示功能的方法
Jun 25 Python
pytorch 共享参数的示例
Aug 17 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
Jun 04 Python
Python如何定义有默认参数的函数
Aug 10 Python
关于 Python json中load和loads区别
Nov 07 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中实现进程间通讯
2006/10/09 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
JavaScript事件列表解说
2006/12/22 Javascript
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
测试你的JS的掌握程度的代码
2009/12/09 Javascript
AngularJS基础教程之简单介绍
2015/09/27 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
2016/04/01 Javascript
jQuery UI仿淘宝搜索下拉列表功能
2017/01/10 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
JS实现登录页密码的显示和隐藏功能
2017/12/06 Javascript
如何使用pm2快速将项目部署到远程服务器
2019/03/12 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
2019/09/11 Javascript
python中__call__内置函数用法实例
2015/06/04 Python
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
Mac 上切换Python多版本
2017/06/17 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
python实现拓扑排序的基本教程
2018/03/11 Python
python读取文件名称生成list的方法
2018/04/27 Python
对python 合并 累加两个dict的实例详解
2019/01/21 Python
python中有函数重载吗
2020/05/28 Python
python 字符串格式化的示例
2020/09/21 Python
HTML5新增form控件和表单属性实例代码详解
2019/05/15 HTML / CSS
艺术专业大学生自我评价
2013/09/22 职场文书
营业经理岗位职责
2013/11/10 职场文书
给海归自荐信的建议
2013/12/13 职场文书
三年大学自我鉴定
2014/01/16 职场文书
十佳班主任事迹材料
2014/01/18 职场文书
科长竞聘演讲稿
2014/05/16 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
2014年工程工作总结
2014/11/25 职场文书
租车协议书
2015/01/27 职场文书
秦始皇兵马俑导游词
2015/02/02 职场文书
2019个人半年工作总结
2019/06/21 职场文书
2019年最新借条范本!
2019/07/08 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python