如何利用python将Xmind用例转为Excel用例
作者:sinat_18866031 发布时间:2022-06-18 19:18:46
标签:python,Xmind,Excel,用例
1、Xmind用例编写规范
1:需求大模块
2:大模块中的小模块(需要根据需求来看需要多少层)
3:用例等级和用例名称
用例等级(转换成Excel文件后,1为High, 2 为 Middle, 3为Low)
转换成excel时,用例的名称为(框出来的1-2-3组合而成),意味着在标等级及之前的节点会组合成用例名称
4:步骤
5:期望结果
6:预置条件,转换成excel时相同层级下的用例会为同一个预置条件
2、转换代码
需要安装python3环境
需要安装 xlwt、xmindparser 这两个第三方包
XmindExcel.py 文件代码
# coding=utf-8
import time
import xlwt
from past.builtins import raw_input
from xmindparser import xmind_to_dict
def resolvePath(dict, lists, title):
# title去除首尾空格
title = title.strip()
# 如果title是空字符串,则直接获取value
if len(title) == 0:
concatTitle = dict['title'].strip()
elif "makers" in dict.keys():
if "priority-" in str(dict["makers"]):
concatTitle = title + '\t' + dict['title'].strip() + "\t" + str(dict["makers"])
else:
concatTitle = title + '\t' + dict['title'].strip()
else:
concatTitle = title + '\t' + dict['title'].strip()
if dict.__contains__('topics') == False:
lists.append(concatTitle)
else:
for d in dict['topics']:
resolvePath(d, lists, concatTitle
def xmind_cat(list, excelname, groupname):
f = xlwt.Workbook()
sheet = f.add_sheet(groupname, cell_overwrite_ok=True)
row0 = ["测试用例编号", "用例标题", "预置条件", "执行方式", "优先级", "测试步骤", "预期结果", "所属项目"]
# 生成第一行中固定表头内容
for i in range(0, len(row0)):
sheet.write(0, i, row0[i])
# 增量索引
index = 0
# case级别
case_leve_index = ""
# 前置条件
case_pre_condition = []
pre_num = 0
for h in range(0, len(list)):
# print("list:",list)
lists = []
resolvePath(list[h], lists, '')
for j in range(0, len(lists)):
# 将xmind转成excel
lists[j] = lists[j].split('\t')
try:
# print(index)
if "【预置条件】" in lists[j][-1] or "【前置条件】" in lists[j][-1]:
case_pre_condition.append(lists[j])
pre_num += 1
else:
case_leve = ""
for n in range(len(lists[j])):
if 'priority-' in str(lists[j][n]):
case_leve_index = n-1
if "priority-1" in str(lists[j][n]):
case_leve = "High"
elif "priority-2" in str(lists[j][n]):
case_leve = "Middle"
elif "priority-3" in str(lists[j][n]):
case_leve = "Low"
lists[j].pop(n)
break
case_name = "-".join(lists[j][:case_leve_index+1])
sheet.write(j + index + 1 - pre_num, 1, case_name) # 标题
if len(lists[j][case_leve_index:-1]) < 2:
sheet.write(j + index + 1 - pre_num, 6, lists[j][case_leve_index + 1]) # 期望结果
else:
sheet.write(j + index + 1- pre_num, 5, lists[j][case_leve_index + 1]) # 步骤
sheet.write(j + index + 1- pre_num, 6, lists[j][case_leve_index + 2]) # 期望结果
sheet.write(j + index + 1- pre_num, 3, "手动") # 执行方式
sheet.write(j + index + 1 - pre_num, 4, case_leve)
# 预置条件
if len(case_pre_condition) > 0:
for pre_list in case_pre_condition:
if set(pre_list[:-1]) < set(lists[j]):
sheet.write(j + index + 1 - pre_num, 2, pre_list[-1])
except:
print("请检查编写的用例是否符合规范:", lists[j])
# 遍历结束lists,给增量索引赋值,跳出for j循环,开始for h循环
if j == len(lists) - 1:
index += len(lists)
f.save(excelname)
def maintest(filename, excelname):
out = xmind_to_dict(filename)
groupname = out[0]['topic']['title']
xmind_cat(out[0]['topic']['topics'], excelname, groupname)
if __name__ == '__main__':
try:
path = raw_input("请输入Xmind用例文件路径,可将文件拖拽到此处:")
filename = path
excelname = path.rstrip('xmind') + 'xls'
maintest(filename, excelname)
print('SUCCESS!\n生成用例成功,用例目录:%s' % excelname)
except:
print('请确认后重试:\n1.用例文件路径中不能有空格换行符\n2.请使用python3运行\n3.检查xmind文件中不能有乱码或无法识别的字符(xmind自带表情字符除外)\n4.检查是否将已生成的excel文件未关闭')
3、使用
运行XmindExcel.py文件,输入文件目录运行即可。生成的Excel文件会在Xmind文件的同路径下,文件名称与Xmind文件名称一致
来源:https://blog.csdn.net/sinat_18866031/article/details/125086436


猜你喜欢
- 要在用户浏览器上安装cookie,HTTP服务器向HTTP响应添加类似以下内容的HTTP报头:Set-Cookie:session=8345
- webpack的loaders是一大特色,也是很重要的一部分。这遍博客我将分类讲解一些常用的laoder一、loaders之 预处理css-
- 当训练样本不均匀时,我们可以采用过采样、欠采样、数据增强等手段来避免过拟合。今天遇到一个3d点云数据集合,样本分布极不均匀,正例与负例相差4
- 最近使用pymysql写脚本的情况越来越多了,刚好整理,简单封装一个pymysql的操作类import pymysqlclass Mysql
- 一、DAFONT 英文字体很多,分类很详细,字体多数都是免费,唯一的缺点中文字体少了些.http://www.dafont.co
- ORACLE 10G修改字符编码,不再麻烦,没有超字符集的限制,可以直接修改成自己想要字符串,不过可能之前已经存在数据可能显示的不正确,需要
- 本文将介绍 5 种基于 Plotly 的可视化方法,你会发现,原来可视化不仅可用直方图和箱形图,还能做得如此动态好看甚至可交互。那么,Plo
- python中format函数用于字符串的格式化自python2.6开始,新增了一种格式化字符串的函数str.format(),此函数可以快
- 前言本文通过定时调度Python的例子演示了Apache DophinScheduler 的基本操作:创建租户指定用户的租户创建Python
- 本文实例展示了Python Tkinter实现简单布局的方法,示例中备有较为详尽的注释,便于读者理解。分享给大家供大家参考之用。具体如下:#
- 在使用pytorch训练模型,经常需要加载大量图片数据,因此pytorch提供了好用的数据加载工具Dataloader。为了实现小批量循环读
- 看一看自己写的类是否能符合这样的标准.要成为高手,我要走的路还很长.摘抄自《OOD 启示录》--Arthur J.Riel(1)所有数据都应
- 概述Rollup, 和 Webpack, Parcel 都是模块打包工具(module bundler tool), 但是侧重点不同, 我们
- 一、修改Linux默认的IO调度算法.linux默认的IO调度算法为cfq,需要修改为dealine,如果是SSD或者PCIe-SSD设备,
- 一般情况下,局域网里的终端比如本地服务器设置静态IP的好处是可以有效减少网络连接时间,原因是过程中省略了每次联网后从DHCP服务器获取IP地
- 模式特点:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。我们来看一下下面这样的程序结构:c
- 前言春联是中国传统文化中最具内涵的元素之一,它以对仗工整、简洁精巧的文字描绘美好形象,抒发美好愿望,是中国特有的文学形式,是华人们过年的重要
- 正在看的ORACLE教程是:常见数据库系统比较 Oracle数据库。提起数据库,第一个想到的公司,一般都会是Oracle。该公司
- 本文实例讲述了python中引用与复制用法。分享给大家供大家参考。具体分析如下:在python中,任何不可变对象是传值的,而可变对象是传引用
- 0.前言回调函数是一种在编程中常见的技术,通常在异步编程中使用。简单来说,回调函数是一个被传递给另一个函数的函数,它在该函数的某个时间点被调