使用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 相关文章推荐
PyQt5每天必学之拖放事件
Aug 27 Python
django使用LDAP验证的方法示例
Dec 10 Python
使用TensorFlow实现简单线性回归模型
Jul 19 Python
django基于存储在前端的token用户认证解析
Aug 06 Python
tensorflow查看ckpt各节点名称实例
Jan 21 Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 Python
PyQt5的相对布局管理的实现
Aug 07 Python
利用python爬取有道词典的方法
Dec 08 Python
selenium与xpath之获取指定位置的元素的实现
Jan 26 Python
python常量折叠基础知识点讲解
Feb 28 Python
pytorch 把图片数据转化成tensor的操作
Mar 04 Python
python pygame入门教程
Jun 01 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
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
js实现日期级联效果
2014/01/23 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
JavaScript中的pow()方法使用详解
2015/06/15 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
巧用weui.topTips验证数据的实例
2017/04/17 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
JavaScript继承与聚合实例详解
2019/01/22 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
小程序实现录音功能
2020/09/22 Javascript
在IIS服务器上以CGI方式运行Python脚本的教程
2015/04/25 Python
Python模拟登录验证码(代码简单)
2016/02/06 Python
python编写简单爬虫资料汇总
2016/03/22 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
python实现智能语音天气预报
2019/12/02 Python
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
赫里福德的一家乡村零售商店:Philip Morris & Son
2017/06/25 全球购物
6PM官网:折扣鞋、服装及配饰
2018/08/03 全球购物
销售经理岗位职责
2014/03/16 职场文书
对孩子的寄语
2014/04/09 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
心理学培训心得体会
2016/01/22 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL
Docker部署Mysql8的实现步骤
2022/07/07 Servers
Nginx 502 bad gateway错误解决的九种方案及原因
2022/08/14 Servers