使用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实现将n个点均匀地分布在球面上的方法
Mar 12 Python
详细介绍Python函数中的默认参数
Mar 30 Python
用Python实现一个简单的能够上传下载的HTTP服务器
May 05 Python
Python中的is和==比较两个对象的两种方法
Sep 06 Python
Python文本统计功能之西游记用字统计操作示例
May 07 Python
django初始化数据库的实例
May 27 Python
我喜欢你 抖音表白程序python版
Apr 07 Python
基于python实现把图片转换成素描
Nov 13 Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 Python
python飞机大战pygame游戏之敌机出场实现方法详解
Dec 17 Python
基于python实现坦克大战游戏
Oct 27 Python
python 实现控制鼠标键盘
Nov 27 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
修改apache配置文件去除thinkphp url中的index.php
2014/01/17 PHP
IIS下PHP的三种配置方式对比
2014/11/20 PHP
PHP实现批量修改文件后缀名的方法
2015/07/30 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
Js sort排序使用方法
2011/10/17 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
Jquery对数组的操作技巧整理
2014/03/25 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
2016/05/03 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
bootstrap fileinput 插件使用项目总结(经验)
2017/02/22 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
使用Python编写Linux系统守护进程实例
2015/02/03 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
详解Python的循环结构知识点
2019/05/20 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
Hotels.com印度:酒店预订
2019/05/11 全球购物
个人简历自我鉴定
2013/10/11 职场文书
应届生财务会计求职信
2013/11/05 职场文书
应届生保险求职信
2013/11/11 职场文书
教师求职信范文
2014/05/24 职场文书
飞机制造技术专业求职信
2014/07/27 职场文书
社区平安建设汇报材料
2014/08/14 职场文书
2015年人民调解工作总结
2015/05/18 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL