利用Python把xmind 转 Excel 测试用例,并转换成gui可执行的exe文件

2024-05-29 17:48

本文主要是介绍利用Python把xmind 转 Excel 测试用例,并转换成gui可执行的exe文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 后续更新:

这篇文章是好几年前写的,其实写得很死,不是很好在项目使用,后续发现了个开源项目,挺好的,有兴趣可以看下: Xmind用例导入到TAPD的方案(附代码)_测试超有范的博客-CSDN博客

-------------------------

纯个人初学学习分享记录,请大佬们手下留情 ~

分解一下必要的步骤(最后附上代码):

  1. 确定好自己的xmind的用例格式;
  2. mindparser库将xmind的文件内容转成字典格式的数据;
  3. xlwt库写成入xls文件;
  4. Python自带的gui库 tkinter来写 gui界面;
  5. 最后用pyinstaller来打包;

1、确定好自己的xmind的用例格式

自己的公司也没有一个固定格式,纯靠测试测试一条一条的复制粘贴进Excel,受不了!!!然后网上找了这么一个模板,这个模板也可以导进禅道(虽然我们公司也没有用),那就按这个看上去比较成熟模板把。

2、xmindparser库将xmind的文件内容转成字典格式的数据

在转库的选择上,有好几个,以下是其中两个:

  • xmind   https://testerhome.com/opensource_projects/xmind
  • xmindparser  将xmind文件转成可编程数据类型 - SegmentFault 思否

xmind库转换很齐全,但xmindparser对我来说够用了,轻便;

xmindparser转换也很简单:

#xmind to dict
from xmindparser import xmind_to_dict
dict_out = xmind_to_dict(xmind_file)#xmind to json
from xmindpraser import xmind_to_json
out_file = xmind_to_json(xmind_file)

 dict_out格式如下:

print(dict_out)[{'title': '画布 1', 'topic': {'title': '产品名称', 'topics': [{'title': 'A模块', 'topics': [{'title': '测试用例1', 'topics': [{'title': '测试步骤1', 'topics': [{'title': '预期结果1.1'}]}, {'title': '测试步骤1.2', 'topics': [{'title': '预期结果1.2'}]}]}, {'title': '用例标题2', 'topics': [{'title': '执行步骤2.2', 'topics': [{'title': '预期结果2.2'}]}, {'title': '测试步骤2.3', 'topics': [{'title': '预期结果2.3'}]}, {'title': '测试步骤2.4', 'topics': [{'title': '预期结果2.4'}]}]}, {'title': '用例标题3(步骤和预期结果可以为空)'}]}, {'title': 'C模块', 'topics': [{'title': '#异常(忽略)', 'topics': [{'title': '测试步骤', 'topics': [{'title': '预期结果'}]}, {'title': '测试步骤', 'topics': [{'title': '预期结果'}]}]}, {'title': '测试步骤2', 'topics': [{'title': '执行步骤1111\r\n测试步骤100000', 'topics': [{'title': '预期结果1.1'}]}, {'title': '#测试步骤42', 'topics': [{'title': '预期结果1.2'}]}, {'title': '测试步骤4.3', 'topics': [{'title': '预期结果1.3'}]}]}]}, {'title': '#B模块(整个模块忽略)', 'topics': [{'title': '测试步骤1', 'topics': [{'title': '执行步骤1\r\n测试步骤1', 'topics': [{'title': '预期结果1.1'}]}, {'title': '#测试步骤42', 'topics': [{'title': '预期结果1.2'}]}, {'title': '测试步骤4.3(没有预期结果会提示)', 'topics': [{'title': '11'}]}]}, {'title': '用例标题2'}]}]}, 'structure': 'org.xmind.ui.map.unbalanced'}]

3、xlwt库写成入xls文件

关于这个库的用法可以参考这个链接

 xlwt:https://www.jb51.net/article/154535.htm

4、tkinter库学习

哈,我是新手,也没打算深入学太多,就没花太多时间去整理,可以根据下面链接去学习,如果也有像我这样小白的,可以去B站(哔哩哔哩)搜索tkinter,看IT兄弟连的,讲得也比较基础。

tkinter库 http://c.biancheng.net/python/tkinter/

5、打包

打包用的是pyinstaller库,先在cmd下pip安装,然后进入相应的Python文件所在的文件夹下,输入命令 ():

pyinstaller -F xmindToExe.py -p  my_xmind_csv_002.py

就可以生成exe可执行文件了,这样这个xmind转xls的打包工具就完成了。注意电脑管家可能会把exe文件删除掉,设置为安全就可以了。

PS:小白可能遇到的坑(如我 - -):

window下cmd 切换目录
cd 是用于同一个磁盘的文件夹的切换但是要从C盘切换到D盘不能直接用cd,要加参数 /D,才能实现从C盘调到D盘
cd /D 可以连盘符一起切换> cd /D D:\Python_Pro\LZQ_Tester\D02_WYY_WuYa\working
或者先 d:  切换磁盘到D,再cd  D:\Python_Pro\LZQ_Tester\D02_WYY_WuYa\working

my_xmind_csv_002.py

from xmindparser import xmind_to_dict
import os,xlwt
from tkinter.messagebox import showinfo
import tkinter.messageboxclass xmind_to_csv():def __init__(self):self.workbook = xlwt.Workbook(encoding='utf-8')self.worksheet = self.workbook.add_sheet('sheet1')def numberLen(self,value,errornum=None):try:return len(value['topics'])except KeyError:if errornum==2:#tkinter.messagebox.askokcancel('提示', '案例 "{0}",没有测试步骤和预期结果喔! 请确认是否如此!'.format(value['title']))print('案例 "{0}",没有测试步骤和预期结果喔! 请确认是否如此!'.format(value['title']))if errornum == 3:#messagebox.showinfo(title='提示', message='案例 "{0}",没有预期结果喔! 请填写后重新执行!'.format(value['title']))print('案例 "{0}",没有预期结果喔! 请填写后重新执行!'.format(value['title']))return 0def xmind_title(self,value):"""获取xmind标题内容"""return value['title']def writeExcel(self,row,case,excelName):sort=0for key,value in case.items():self.worksheet.write(row, sort, value)sort=sort+1self.workbook.save(excelName+'.xls')def readXmind(self,FileName):self.rowNum = 0 #计算测试用例的条数self.caseDict={}self.XmindContent = xmind_to_dict(FileName)[0]['topic'] # xmind内容self.XmindTitle=self.xmind_title(self.XmindContent)TestSiutMunFlag=self.numberLen(self.XmindContent,0)for TestSiutMun in range(TestSiutMunFlag):TestCaseMunFlag=self.numberLen(self.XmindContent['topics'][TestSiutMun],1)for TestCaseMun in range(TestCaseMunFlag):TestStepMunFlag=self.numberLen(self.XmindContent['topics'][TestSiutMun]['topics'][TestCaseMun],2)#执行步骤跟预期结果为空的时候if TestStepMunFlag==0:self.caseDict['TestSiut'] = self.XmindContent['topics'][TestSiutMun]['title']self.caseDict['TestCase'] = self.XmindContent['topics'][TestSiutMun]['topics'][TestCaseMun]['title']self.caseDict['TestStep'] = '空'self.caseDict['TestResult'] = '空'self.caseDict['myTestCase'] = self.caseDict['TestSiut'] + '/' + self.caseDict['TestCase']print(self.rowNum,self.caseDict['myTestCase'])self.rowNum = self.rowNum + 1self.writeExcel(self.rowNum,self.caseDict,self.XmindTitle)for TestStepMun in range(TestStepMunFlag):TestResultFlag = self.numberLen(self.XmindContent['topics'][TestSiutMun]['topics'][TestCaseMun]['topics'][TestStepMun],3)#预期结果不能为空if TestResultFlag != 0:self.caseDict['TestSiut']=self.XmindContent['topics'][TestSiutMun]['title']self.caseDict['TestCase']=self.XmindContent['topics'][TestSiutMun]['topics'][TestCaseMun]['title']self.caseDict['TestStep']=self.XmindContent['topics'][TestSiutMun]['topics'][TestCaseMun]['topics'][TestStepMun]['title']self.caseDict['TestResult'] = self.XmindContent['topics'][TestSiutMun]['topics'][TestCaseMun]['topics'][TestStepMun]['topics'][0]['title']self.caseDict['myTestCase']=self.caseDict['TestSiut']+'/'+self.caseDict['TestCase']+'-'+self.caseDict['TestStep']+'-'+self.caseDict['TestResult']print(self.rowNum,len(self.caseDict['myTestCase']),self.caseDict['myTestCase'])self.rowNum=self.rowNum+1self.writeExcel(self.rowNum,self.caseDict,self.XmindTitle)#showinfo(title='转换结束', message='生成{0}条案例,请检查是否有误。'.format(self.rowNum))if __name__ == '__main__':XmindFile = os.path.join(os.path.dirname(__file__),'xmind_excel.xmind')  # xmind文件xmind_to_csv().readXmind(XmindFile)

xmind_excel.py

import tkinter as tk
from tkinter.filedialog import askopenfilename
from tkinter.messagebox import showinfo
from D02_WYY_WuYa.working.my_xmind_csv_003 import xmind_to_csv
import re# 定义MainUI类表示应用/窗口,继承Frame类
class MainUI(tk.Frame):# Application构造函数,master为窗口的父控件def __init__(self, master=None):# 初始化Application的Frame部分tk.Frame.__init__(self, master)# 显示窗口,并使用grid布局self.grid()self.path = tk.StringVar()# 创建控件self.createWidgets()def selectPath(self):'''选择要转换成excel的xmind地址'''self.path_ = askopenfilename()self.path.set(self.path_)# 创建控件def createWidgets(self):'''生成gui界面'''# 创建一个标签,输出要显示的内容self.firstLabel = tk.Label(self, text="目标路径")# 设定使用grid布局self.firstLabel.grid(row = 0, column = 0)self.firstEntry = tk.Entry(self,textvariable = self.path)self.firstEntry.grid(row=0, column=1)# 创建一个按钮,用来触发answer方法self.clickButton = tk.Button(self, text="路径选择", command=self.selectPath)# 设定使用grid布局self.clickButton.grid(row = 0, column = 2)self.clickButton = tk.Button(self, text="提交",command=self.getvalue)# 设定使用grid布局self.clickButton.grid(row=4, column=1)def getvalue(self):'''执行转换excel函数'''xmindPath = self.path.get()self.regvalue = '.*\.xmind$'self.xmind_reg = re.match(self.regvalue,xmindPath )if self.xmind_reg:# xmind转换成xlsself.xmind_to_xls = xmind_to_csv()self.xmind_to_xls.readXmind(xmindPath)else:showinfo(title='提示',message='请选择正确的xmind文件,谢谢!')# 创建一个MainUI对象
app = MainUI()
# 设置窗口标题
app.master.title('Xmind 转 xls ')
# 设置窗体大小
app.master.geometry('290x90')
app.master.resizable(False, False)
# 主循环开始
app.mainloop()

本文参考:

使用Python将xmind脑图转成excel用例(一) - 晚风拂面 - 博客园

使用Python中tkinter库简单gui界面制作及打包成exe(二) - 晚风拂面 - 博客园

这篇关于利用Python把xmind 转 Excel 测试用例,并转换成gui可执行的exe文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014218

相关文章

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码