使用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的Django框架下使用django-tagging的教程
May 30 Python
python3.0 模拟用户登录,三次错误锁定的实例
Nov 02 Python
单利模式及python实现方式详解
Mar 20 Python
对pandas中apply函数的用法详解
Apr 10 Python
对Python random模块打乱数组顺序的实例讲解
Nov 08 Python
Atom Python 配置Python3 解释器的方法
Aug 28 Python
Python中list循环遍历删除数据的正确方法
Sep 02 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
Python while循环使用else语句代码实例
Feb 07 Python
在Django中预防CSRF攻击的操作
Mar 13 Python
Python几种常见算法汇总
Jun 02 Python
利用python做数据拟合详情
Nov 17 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
Docker配置PHP开发环境教程
2016/12/21 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
2011/03/28 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
drag-and-drop实现图片浏览器预览
2015/08/06 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
Bootstrap零基础入门教程(三)
2016/07/18 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
2016/09/13 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
微信小程序中setInterval的使用方法
2017/09/29 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
深入理解Node module模块
2018/03/26 Javascript
vue js秒转天数小时分钟秒的实例代码
2018/08/08 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
2020/09/21 Javascript
[01:35]辉夜杯战队访谈宣传片—iG.V
2015/12/25 DOTA
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
初学Python函数的笔记整理
2015/04/07 Python
python发送邮件功能实现代码
2016/07/15 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2019/06/21 Python
python3安装crypto出错及解决方法
2019/07/30 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
python用tkinter实现一个gui的翻译工具
2020/10/26 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
英国工艺品购物网站:Minerva Crafts
2018/01/29 全球购物
土木工程专业个人求职信
2013/12/05 职场文书
抗洪救灾先进集体事迹材料
2014/05/26 职场文书
参观邀请函范文
2015/02/02 职场文书
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
2021/04/04 Servers
关于python类SortedList详解
2021/09/04 Python