使用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实现基于HTTP文件传输实例
Nov 08 Python
详解Python读取配置文件模块ConfigParser
May 11 Python
Python查找两个有序列表中位数的方法【基于归并算法】
Apr 20 Python
对python list 遍历删除的正确方法详解
Jun 29 Python
详解分布式任务队列Celery使用说明
Nov 29 Python
用Python读取几十万行文本数据
Dec 24 Python
Python flask框架post接口调用示例
Jul 03 Python
python dumps和loads区别详解
Feb 04 Python
python神经网络编程实现手写数字识别
May 27 Python
如何使用Django Admin管理后台导入CSV
Nov 06 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
Aug 30 Python
详解PyTorch模型保存与加载
Apr 28 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 - Html Transfer Code
2006/10/09 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
php实现socket推送技术的示例
2017/12/20 PHP
为数据添加append,remove功能
2006/10/03 Javascript
filemanage功能中用到的lib.js
2007/04/08 Javascript
js模拟类继承小例子
2010/07/17 Javascript
js中匿名函数的N种写法
2010/09/08 Javascript
js动态改变select选择变更option的index值示例
2014/07/10 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
原生JavaScript编写俄罗斯方块
2015/03/30 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
Python Queue模块详解
2014/11/30 Python
python base64 decode incorrect padding错误解决方法
2015/01/08 Python
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
python基础之入门必看操作
2017/07/26 Python
Python基于requests库爬取网站信息
2020/03/02 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
浅谈python量化 双均线策略(金叉死叉)
2020/06/03 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
面料业务员岗位职责
2013/12/26 职场文书
推荐信怎么写
2014/05/09 职场文书
教师专业自荐信
2014/05/31 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
个人年终总结怎么写
2015/03/09 职场文书
2016年大学生党员承诺书
2016/03/24 职场文书
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
2021/09/04 SQL Server