利用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: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

webm怎么转换成mp4?这几种方法超多人在用!

webm怎么转换成mp4?WebM作为一种新兴的视频编码格式,近年来逐渐进入大众视野,其背后承载着诸多优势,但同时也伴随着不容忽视的局限性,首要挑战在于其兼容性边界,尽管WebM已广泛适应于众多网站与软件平台,但在特定应用环境或老旧设备上,其兼容难题依旧凸显,为用户体验带来不便,再者,WebM格式的非普适性也体现在编辑流程上,由于它并非行业内的通用标准,编辑过程中可能会遭遇格式不兼容的障碍,导致操

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

多重背包转换成0-1背包

http://acm.hdu.edu.cn/showproblem.php?pid=2191 多重背包特点: 一种物品有C个(既不是固定的1个,也不是无数个) 优化的方法: 运用神奇的二进制,进行物品拆分,转化成01背包 物品拆分,把13个相同的物品分成4组(1,2,4,6) 用这4组可以组成任意一个1~13之间的数! 原理:一个数总可以用2^

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip