使用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操作CouchDB的方法
Oct 08 Python
Python列表list数组array用法实例解析
Oct 28 Python
Python中动态获取对象的属性和方法的教程
Apr 09 Python
用python实现简单EXCEL数据统计的实例
Jan 24 Python
Python内置函数 next的具体使用方法
Nov 24 Python
利用numpy实现一、二维数组的拼接简单代码示例
Dec 15 Python
解决Mac安装scrapy失败的问题
Jun 13 Python
Python 变量类型详解
Oct 10 Python
安装2019Pycharm最新版本的教程详解
Oct 22 Python
查看已安装tensorflow版本的方法示例
Apr 19 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
May 15 Python
Python创建SQL数据库流程逐步讲解
Sep 23 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
2014/09/28 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
Laravel下生成验证码的类
2017/11/15 PHP
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
用javascript添加控件自定义属性解析
2013/11/25 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
2016/02/29 Javascript
jQuery使用cookie与json简单实现购物车功能
2016/04/15 Javascript
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
多种方式实现js图片预览
2016/12/12 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
WebPack工具运行原理及入门教程
2020/12/02 Javascript
python中字符串类型json操作的注意事项
2017/05/02 Python
Python基于高斯消元法计算线性方程组示例
2018/01/17 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
Django-imagekit的使用详解
2020/07/06 Python
css3 盒模型以及box-sizing属性全面了解
2016/09/20 HTML / CSS
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
为智能设备设计个性化保护套网站:caseable
2017/01/05 全球购物
英国在线玫瑰专家:InterRose
2019/12/01 全球购物
中专毕业生自我鉴定
2014/02/02 职场文书
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
日语专业毕业生自荐书
2014/06/18 职场文书
出国签证在职证明范本
2014/11/24 职场文书
python flask框架快速入门
2021/05/14 Python
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers