首页 > 编程语言 >python之x-mind中的测试用例内容转excel

python之x-mind中的测试用例内容转excel

时间:2023-07-05 16:55:06浏览次数:64  
标签:sheet title python mind lists write header 测试用例 row

注意:

导包xlwt生成的excel的文件后缀只能是xls,用xlsx打开文件会报错

一、文件格式

1.x-mind用例格式,若觉得字段太多可在代码中缩减

 2.转后的excel格式

 二、脚本(原贴:caituotuo.top/c2d10f21.html

修改最下面文件路径即可用

import xlwt
from xmindparser import xmind_to_dict
def resolve_path(dict_, lists, title):
"""
通过递归取出每个主分支下的所有小分支并将其作为一个列表
:param dict_:
:param lists:
:param title:
:return:
"""
# 去除title首尾空格
title = title.strip()
# 若title为空,则直接取value
if len(title) == 0:
concat_title = dict_["title"].strip()
else:
concat_title = title + "\t" + dict_["title"].strip()
if not dict_.__contains__("topics"):
lists.append(concat_title)
else:
for d in dict_["topics"]:
resolve_path(d, lists, concat_title)


def xmind_to_excel(list_, excel_path):
f = xlwt.Workbook()
# 生成单sheet的Excel文件,sheet名自取
sheet = f.add_sheet("测试用例", cell_overwrite_ok=True)
#第一行表头
frist_row_header=['测试用例']
sheet.write_merge(0,0,0,11,frist_row_header[0])
#第二行表头
two_row_header=['文件密级: ○高密 ○机密 ○秘密 ○内部公开 ○外部公开 保密期:○无 ○______年']
sheet.write_merge(1, 1, 0, 11, two_row_header[0])
#第三行表头
three_row_header=['项目编号','项目名称','测试日期','测试类型','测试版本']
sheet.write_merge(2, 2, 0, 1, three_row_header[0])
sheet.write(2,3, three_row_header[1])
sheet.write(2,6, three_row_header[2])
sheet.write(2,8, three_row_header[3])
sheet.write(2,10, three_row_header[4])
# 第四行表头
row_header = ["序号", "模块名称", "子功能","用例描述","前置条件","测试数据","操作步骤","测试人员","期望结果","首次测试结果","复测结果","测试问题及其原因","备注"]
for i in range(0, len(row_header)):
sheet.write(3, i, row_header[i])

# 增量索引
index = 0
all_row=0
for h in range(0, len(list_)):
lists:List[Any] = []
resolve_path(list_[h], lists, "")
all_row=len(lists)+all_row
print(lists)
# print('\n'.join(lists)) # 主分支下的小分支

for j in range(0, len(lists)):
# 将主分支下的小分支构成列表
lists[j] = lists[j].split('\t')
# print(lists[j])

for n in range(0, len(lists[j])):
# 生成第一列的序号
sheet.write(j + index + 4, 0, j + index + 1)
sheet.write(j + index + 4, n + 1, lists[j][n])
# 自定义内容,比如:测试点/用例标题、预期结果、实际结果、操作步骤、优先级……
# 这里为了更加灵活,除序号、模块、功能点的标题固定,其余以【自定义+序号】命名,如:自定义1,需生成Excel表格后手动修改
# if n >= 2:
# sheet.write(0, n + 1, "自定义" + str(n - 1))
# 遍历完lists并给增量索引赋值,跳出for j循环,开始for h循环
if j == len(lists) - 1:
index += len(lists)
#倒数第三行
row_lenth=all_row+6
sheet.write_merge(row_lenth,row_lenth,0,2,"最终结论")
sheet.write_merge(row_lenth, row_lenth,3 ,11, "□通过 □不通过")
#倒数第二行
row_lenth = all_row +7
context= '备注:①NA表示不适用,当结果为NA和NG时,需将问题及原因进行简单描述;' \
'②当首次测试经过为NG时,需要在开发修改完成后进行复测,若出现多次复测情况,需要在备注中说明次数。'
sheet.write_merge(row_lenth, row_lenth, 0, 11, context)
#倒数第一行
row_lenth = all_row + 8
sheet.write(row_lenth,0,"制定:")
sheet.write(row_lenth, 5, "审核:")
sheet.write(row_lenth, 9, "批准:")
f.save(excel_path)

if __name__ == '__main__':
xmind_path_ = r"D:\\pythonProject_01\\qqq\\sample\\Test.xmind"
run(xmind_path_)

标签:sheet,title,python,mind,lists,write,header,测试用例,row
From: https://www.cnblogs.com/ahuaa/p/17528992.html

相关文章

  • python批量自动化工作
    将下述内容批量转换成指定的格式复仇之魂,众神之王,魅惑魔女,变体精灵,水晶室女,流浪剑客,娜伽海妖,撼地神牛,隐形刺客,秀豆魔导师,熊德,剑圣月之骑士,矮人火枪手,巨魔战将,暗影萨满,钢背兽,熊猫酒仙,半人马酋长,赏金猎人,龙骑士,敌法师,黑暗游侠,全能骑士,沉默术士,树精卫士,谜团,光之守卫,熊战士,食......
  • python基础 进程、操作系统调度算法、同步异步、开启进程、process类的参数、进程锁、
    进程概念进程、线程都是操作系统中的基本概念,也就是说进程和线程都是操作系统层的东西,专业术语表达就是进程和线程的使用都是由操作系统来调度的‘,而不是由我们来操控的。在操作系统这门课里,进程和线程是操作系统的概念,协程不是操作系统中的概念,而是我们程序层面的......
  • python条件判断语句
    if条件判断语句if条件:(缩进)语句块一语句块二python的条件判断语句是没有括号的,对于所匹配的代码块的精准定位是通过缩进实现的,这是python的一大特色。、if条件:   语句块一else:   语句块二如果还有更多条件的话可以引入elifif条件:   语句块一e......
  • 1 opencv-python图像读写模块
    这个分类记录自己学习opencv的随笔文档,方便以后查询和复习。python-opencv环境配置网上教程很多,此处就不做赘述了,该文档记录opencv最基础的图像读写和显示,工具是jupyternotebook。1opencv中,图像读取函数是imread(filename,flags=None)参数说明:filename:读取图像的路径,通常支......
  • python 并发编程
    一、需要了解的概念1、进程和程序的区别程序就是一堆死的东西,没有生命周期进程是有生命周期的,当一个任务进行完毕之后,进程就不存在了2、cpu的工作机制1.当CPU遇到I/O操作的时候,会剥夺CPU的执行权限I/O密集型:inputoutput遇到阻塞,但是不需要占用大量的CPU资源,需要等待,比如:sle......
  • python环境问题--import matplotlib.pyplot as plt报错
        python环境配置好后,刚开始没问题,过几天用vscode写python代码的时候,突然导matplotlib包报错:DLLloadfailed:找不到指定的模块。    首先定位报错的具体代码,发现是导入matplotlib包报错,去掉那条命令后程序正常执行,然后继续尝试,importmatplotlib没有问题,但是im......
  • C++、Lua、Python字符串防止转义
    使用场景C++里测试路径需要转义,Windows复制路径里面的斜杠需要加斜杠,每次都需要操作比较麻烦,而且看着也不好看换行,代码里有时候硬编码一些文本、数据,依赖""的自动拼接和行末的斜杠,需要手动写\r\n换行C++Rawstringliteral以前用Lua,里有[[]],防止转义非常方便。后来了解到P......
  • python celery 使用
    目录结构配置点击查看代码fromceleryimportCelery,platformsfromkombuimportExchange,Queueplatforms.C_FORCE_ROOT=Truebroker='redis://127.0.0.1:6380/1'backend='redis://127.0.0.1:6380/2'app=Celery('sxj',b......
  • Python史上最全种类数据库操作方法,你能想到的数据库类型都在里面!甚至还有云数据库!
    本文将详细探讨如何在Python中连接全种类数据库以及实现相应的CRUD(创建,读取,更新,删除)操作。我们将逐一解析连接MySQL,SQLServer,Oracle,PostgreSQL,MongoDB,SQLite,DB2,Redis,Cassandra,MicrosoftAccess,ElasticSearch,Neo4j,InfluxDB,Snowflake,AmazonDynamoDB,MicrosoftAzureCosMosDB数据......
  • Python基础语法--课程笔记
    Smiling&Weeping----我的心是旷野的鸟,在你的眼睛里找到了它的天空定义和使用类:1.声明类:class类名:成员变量,成员函数2.定义类的对象:对象名=类名()3.成员变量:  公有变量私有变量__xxx4.构造函数: ......