使用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实现栈的方法
May 26 Python
Python之dict(或对象)与json之间的互相转化实例
Jun 05 Python
python通过配置文件共享全局变量的实例
Jan 11 Python
Pycharm之快速定位到某行快捷键的方法
Jan 20 Python
selenium python 实现基本自动化测试的示例代码
Feb 25 Python
Pytorch DataLoader 变长数据处理方式
Jan 08 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
Mar 09 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
Jun 22 Python
python利用线程实现多任务
Sep 18 Python
python 批量下载bilibili视频的gui程序
Nov 20 Python
Matplotlib中rcParams使用方法
Jan 05 Python
详解Python中的文件操作
Jan 14 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 substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
制作安全性高的PHP网站的几个实用要点
2014/12/30 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
php支付宝系列之电脑网站支付
2018/05/30 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
window.open 以post方式传递参数示例代码
2014/02/27 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
jQuery学习笔记之入门
2016/12/14 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
javascript input输入框模糊提示功能的实现
2017/09/25 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
详解VS Code使用之Vue工程配置format代码格式化
2019/03/20 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
高性能web服务器框架Tornado简单实现restful接口及开发实例
2014/07/16 Python
Python编程之多态用法实例详解
2015/05/19 Python
python比较两个列表大小的方法
2015/07/11 Python
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
环境日宣传活动总结
2014/07/09 职场文书
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
工伤调解协议书
2016/03/21 职场文书
2019年聘任书的写作格式及范文!
2019/07/03 职场文书
餐厅开业活动方案
2019/07/08 职场文书
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers