使用Python将xmind脑图转成excel用例(一)
最近接到一个领导需求,将xmind脑图直接转成可以导入的excel用例,并且转换成gui可执行的exe文件,方便他人使用。
因为对Python比较熟悉,所以就想使用Python3来实现这个功能,先理一下思路,首先要将xmind转换成Python可用的数据格式,正好找到了一个xmindparser库可以做这个事情,然后就好办了,用xlwt库写成xls文件,再用Python自带的gui库 tkinter来写 gui界面,最后用pyinstaller来打包。
计划分两个py文件来写,一个文件写excel ,一个文件写gui界面,因为需要导入的字段比较多,而且导入的格式有严格的要求,所以写excel的逻辑还是有点复杂的,所以我们确定xmind的文件有相应的格式来写,测试编号 测试需求 测试用例标题 测试用例执行步骤 测试用例预期结果 测试用例预置条件都要按照相应的格式来。格式如图
通过xmindparser解析出来的格式是这样的,是Python的字典加列表的格式
从这里我们可以分析出来xmind的格式的两个属性是我们用的,title 和topics ,其中title是我们要的内容,topics是内容的个数,这里可以封装两个函数来用,代码我贴出来,因为要求的xls格式不一样
所以具体的逻辑还要具体的去写,我是按照我们工具要求的excel格式来写的,可以给大家参考一下,你们需要什么格式可以在write_excel函数里面调整逻辑.
下一篇再把tkinter设计的gui代码以及如何用pyintaller打包成exe贴上来。注:以下代码都是在Python3环境下的
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 pandas模块简单使用(读取excel为例)
第一步:模块安装 pip install pandas 第二步:使用(单个工作表为例) 说明:如果有多个工作表,那么只要指定sheetname=索引,(第一个工作表为0,第二个工作表为1,以此类推) ...
- python中将xmind转成excel
需求:最近公司项目使用tapd进行管理,现在遇到的一个难题就是,使用固定的模板编写测试用例,使用excel导入tapd进行测试用例管理,觉得太过麻烦,本人一直喜欢使用导图来写测试用例,故产生了这个工具 ...
- Python实现XMind测试用例快速转Excel用例
转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/c2d10f21.html 你好,我是测试蔡坨坨. 今天分享一个Python编写的小工具,实现XMind测试用例转Excel用 ...
- Python 文本(txt) 转换成 EXCEL(xls)
#!/bin/env python # -*- encoding: utf-8 -*- #------------------------------------------------------- ...
- 无需会员将有道云笔记脑图转换xmind
我的烦恼 有道云笔记有脑图功能,我平时经常用到,之所以很少用到其他脑图工具,是因为我一直用有道云笔记写笔记.因此编辑脑图和查看脑图比较方便,但是需要将脑图导出的时候目前只支持图片和xmind,但是需要 ...
- text image & 思维脑图 & xmind
text image & 思维脑图 text-image 图片读 rgb 值->灰度值->字符; rgb->灰度值的公式 google 一下就有,灰度值传字符部分,从灰度值从 ...
- 用Python解析XMind
本文来自网易云社区 作者:孙圣翔 转自:http://shengxiang.me/article/35/python-parse-xmind.html XMind是画思维脑图很好的工具,正好组里有个需 ...
- 提效工具-python解析xmind文件及xmind用例统计
现状 每个公司都有一个维护测试case的系统,有自研的也有买的,比如QC, 禅道等等,QA往往习惯使用xmind等思维导图工具来编写测试用例,因为思路清晰,编写方便,那么这就有一个问题,大多公司要求所 ...
- Java集合总结【面试题+脑图】,将知识点一网打尽!
前言 声明,本文用的是jdk1.8 花了一个星期,把Java容器核心的知识过了一遍,感觉集合已经无所畏惧了!!(哈哈哈....),现在来总结一下吧~~ 回顾目录: Collection总览 List集 ...
随机推荐
- 前端技术之:常见前端UI相关开源项目
Bootstrap https://getbootstrap.com/BootstrapVue provides one of the most comprehensive implementatio ...
- MySQL8.0 redo日志系统优化
背景 现在主流的数据库系统的故障恢复逻辑都是基于经典的ARIES协议,也就是基于undo日志+redo日志的来进行故障恢复.redo日志是物理日志,一般采用WAL(Write-Ahead-Loggin ...
- [考试反思]1023csp-s模拟测试83:等候
分数倒是依旧那么烂,但是这个时间比较诡异. 6分49秒弄出T1,15分钟送上T2的50分暴力,不到一小时半的时候T3的30分暴力也完成了... 在85分钟之后一次提交也没有 前15分钟平均每分钟得10 ...
- Scrapy爬取豆瓣图书数据并写入MySQL
项目地址 BookSpider 介绍 本篇涉及的内容主要是获取分类下的所有图书数据,并写入MySQL 准备 Python3.6.Scrapy.Twisted.MySQLdb等 演示 代码 一.创建项目 ...
- php strpos注意的地方
php strpos注意的地方<pre> $pos = strpos('paihangbang2864195', strval(2864195)); </pre> 类型必须一致 ...
- 误删tree命令如何恢复
误删tree命令如何恢复 考察rpm,yum的用法 一.删除tree命令,tree命令不可用 [root@centos7 ~]# which tree /usr/bin/tree [root@cent ...
- 深入理解 DNS
深入理解 DNS 简介 DNS(Domain Name System)域名系统,它是一个将域名和 IP 地址相互映射的一个分布式数据库,把容易记忆的主机名转换成主机 IP 地址. DNS使用 TCP ...
- Python基础之JSON
作用 对Python对象进行序列化,便于存储和传输 Python对象与JSON字符串相互转换 Python对象转JSON字符串 import json data = [ { 'a' : 1, 'b' ...
- PHP Swoole长连接常见问题
连接失效问题例子其中,Redis常见的报错就是: 配置项:timeout报错信息:Error while reading line from the serverRedis可以配置如果客户端经过多少秒 ...
- nyoj 255-C小加 之 随机数 (map)
255-C小加 之 随机数 内存限制:64MB 时间限制:3000ms 特判: No 通过数:15 提交数:18 难度:1 题目描述: ACM队的“C小加”同学想在学校中请一些同学一起做一项问卷调查, ...