使用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的Flask框架中实现单元测试的教程
Apr 20 Python
在Django的模型中添加自定义方法的示例
Jul 21 Python
Python 实现 贪吃蛇大作战 代码分享
Sep 07 Python
Python自定义主从分布式架构实例分析
Sep 19 Python
Python 爬虫学习笔记之单线程爬虫
Sep 21 Python
使用anaconda的pip安装第三方python包的操作步骤
Jun 11 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
Jul 12 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
Python 使用list和tuple+条件判断详解
Jul 30 Python
pytorch的batch normalize使用详解
Jan 15 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
基于Python把网站域名解析成ip地址
May 25 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中批量替换文件名的实现代码
2011/07/20 PHP
Yii Framework框架获取分类下面的所有子类方法
2014/06/20 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
Bootstrap3 图片(响应式图片&图片形状)
2017/01/04 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
vue实现点击隐藏与显示实例分享
2019/02/13 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
JS计算斐波拉切代码实例
2019/09/12 Javascript
python生成指定长度的随机数密码
2014/01/23 Python
Python编程实现蚁群算法详解
2017/11/13 Python
Python3中条件控制、循环与函数的简易教程
2017/11/21 Python
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
Python-split()函数实例用法讲解
2020/12/18 Python
一些网络技术方面的面试题
2014/05/01 面试题
两道JAVA笔试题
2016/09/14 面试题
商场经理竞聘演讲稿
2014/01/01 职场文书
小学信息技术教学反思
2014/02/10 职场文书
cf收人广告词
2014/03/14 职场文书
工程管理英文求职信
2014/03/18 职场文书
公司经理聘任书
2014/03/29 职场文书
产品开发计划书
2014/04/27 职场文书
土建工程师岗位职责
2014/06/10 职场文书
政府四风问题整改措施
2014/10/04 职场文书
七一晚会主持词
2015/06/29 职场文书
Java 在生活中的 10 大应用
2021/11/02 Java/Android
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers