xmind转Excel测试用例

  • 一、引言
  • 二、环境准备
  • 三、脚本编写
    • 1、读取xmind文件
    • 2、根据读取数据,解析数据
    • 3、定义测试用例标题
    • 4、数据写入Excel中
    • 5、运行入口
  • 四、总结

一、引言

作为一名测试点工,我们是需要经常写测试用例的,一般我们都会使用xmind或者freemain先写出导图,然后根据导图再编写我们的测试用例。那我们能不能直接把导图中的内容直接转成Excel测试用例呢,…有了想法,开始行动起来,测试人不要怂,开始干。

二、环境准备

点工一般都使用python居多,本次我们也是用python来写脚本实现本次需求,从网上了解到xmindparser库可以解析xmind文件数据,支持将xmind文件解析为dict、json、xml数据类型。数据解析完成后,还需要把解析的数据存在Excel中,python处理Excel库很多,在这边我使用的是openpyxl库。

python 3.7.1
xmindparser 1.0.9
openpyxl 3.0.9

上面介绍完本次使用的库,还有一个重点就是,xmind的导图如何每个人写法都不一样,我们该如何解析形成统一标准呢,所以我们应该制定一个写导图的规则,下方是我制定的一个规则,后面都以此规则讲解。规则不是唯一,可根据实际情况自行制定。

中心主题:项目标题
二级标题:模块标题
三级标题:用例正标题
四级标题:操作步骤
五级标题:预期结果

三、脚本编写

1、读取xmind文件

读取xmind文件数据,xmind_to_dict(xmind_file_path)[0][“topic”] 返回数据如图所示,我们读取文件时把中心主题和二级目录下分支数据取出,用于后续处理。

代码如下:

from xmindparser import xmind_to_dict
def read_xmind_data(xmind_file_path):"""读取xmind文件,返回中心主题标题和其他分支list数据:param xmind_file: xmind文件路径:return:"""case_data_dict=xmind_to_dict(xmind_file_path)[0]["topic"]title = case_data_dict["title"]data_list=case_data_dict["topics"]return title,data_list

2、根据读取数据,解析数据

上面我们已经读取出数据,先分析下数据构成,我们发现每一个topics下面都有下一级的list,我们可以使用循环或者递归来提取出数据,并形成类似:登录-输入正确账号密码登录-进入登录页面-成功进入登录页面 这种结构的数据。
返回数据如下:

代码如下:

def xmind_to_caselist(data_list,title,listcase,strcase=''):"""根据传入的list数据,递归解析出数据,形成以:登录-输入正确账号密码登录-进入登录页面-成功进入登录页面 的数据:param data_list: 传入解析后list:param strcase: 初始字符串,默认为空:param listcase: 存用例数据的list:return: 返回以每条用例数据的list"""for branch_one in data_list:strcase_one = strcase + branch_one['title'] + '_'if 'topics' not in branch_one:# 分支中不存在topics时,把数据添加到listcase中strcase_one=title+'_'+ strcase_onelistcase.append(strcase_one)continuebranch = branch_one['topics']# 递归,遍历所有分支xmind_to_caselist(branch,title,listcase,strcase=strcase_one)return listcase

3、定义测试用例标题

目前我所在的公司使用tapd,tapd中所用的测试用例模板标标题为:ID 用例目录 用例名称 前置条件 用例步骤 预期结果 用例类型 用例状态 用例等级。其中一些标题一般都没什么变化,我这边使用默认值。由上面返回的listcase数据,把数据拆分后重新组成一条用例,一条用例为一个list,方便后续写入Excel中。
返回数据如下:

代码如下:

def change_case(listcase,top_term='',case_type='功能测试',case_state='待更新',case_grade='中'):"""Excel中用例标题分为如下9个(tapd上的上传标准):ID    用例目录    用例名称    前置条件    用例步骤    预期结果    用例类型    用例状态    用例等级ID:自增用例目录:项目名称-模块名称 例如:某某某项目-登录模块用例名称:提取传入数据的三级标题+四级标题+五级标题前置条件:默认为空,可自己填写通用数据用例步骤:提取数据的四级标题预期结果:提取数据的五级标题用例类型:默认值为功能测试,可填其他值为:性能测试,安全性测试用例状态:默认值为待更新,可填其他值为:正常,已废弃用例登记:默认值为中,可填其他值为:高,低:param data_list: 传入已从xmind分解成的list数据:param top_term: 前置条件:param case_type: 用例类型:param case_state: 用例状态:param case_grade: 用例等级:return: 返回以一条用例为一个list的数据,例如[[用例1],[用例2],[用例3]]"""total_case=[]#总的用例格式的listcase_id=1for data in listcase:case_list=[]#每一条用例的listdata_sp=data.split('_')case_list.append(case_id)case_list.append(data_sp[0]+"-"+data_sp[1])case_list.append(data_sp[2]+','+data_sp[3]+','+data_sp[4])case_list.append(top_term)case_list.append(data_sp[3])case_list.append(data_sp[4])case_list.append(case_type)case_list.append(case_state)case_list.append(case_grade)total_case.append(case_list)case_id+=1return total_case

4、数据写入Excel中

在上面步骤中,已经完成对数据的梳理,下面使用openpyxl库完成对数据的写入并相应的调整样式。
代码如下:

def write_excel_case(total_case,save_path):"""把解析的数据写入Excel中:param total_case: 解析完成的数据:param save_path: 文件保存路径:return: """wb=Workbook()ws=wb.activews['A1']='ID'ws['B1']='用例目录'ws['C1']='用例名称'ws['D1']='前置条件'ws['E1']='用例步骤'ws['F1']='预期结果'ws['G1']='用例类型'ws['H1']='用例状态'ws['I1']='用例等级'i=1for case in total_case:ws['A{}'.format(i + 1)] = case[0]ws['B{}'.format(i + 1)] = case[1]ws['C{}'.format(i + 1)] = case[2]ws['D{}'.format(i + 1)] = case[3]ws['E{}'.format(i + 1)] = case[4]ws['F{}'.format(i + 1)] = case[5]ws['G{}'.format(i + 1)] = case[6]ws['H{}'.format(i + 1)] = case[7]ws['I{}'.format(i + 1)] = case[8]i+=1column_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']cell_list = ['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1']#设置表头字体font=Font(name='宋体',bold=True)for cel in cell_list:cell=ws[cel]cell.font=font# 设置列的表格居中alignment = Alignment(horizontal='center',wrapText=True)for col_name in column_list:col_list = ws[col_name]for col in col_list:col.alignment = alignment#设置列的宽度ws.column_dimensions['B'].width = 20ws.column_dimensions['C'].width = 60ws.column_dimensions['D'].width = 30ws.column_dimensions['E'].width = 30ws.column_dimensions['F'].width = 30ws.column_dimensions['G'].width = 15ws.column_dimensions['H'].width = 15ws.column_dimensions['I'].width = 15#设置行的高度for x in range(2,ws.max_row+1):ws.row_dimensions[x].height = 40wb.save(save_path)

5、运行入口

上述步骤中已经把脚本所需函数完成,下面写下运行脚本函数:
代码如下:

def run_main(xmind_file_path,save_path,top_term='',case_type='功能测试',case_state='待更新',case_grade='中'):""":param xmind_file_path: xmind文件路径:param save_path: 文件保存路径:param top_term: 前置条件:param case_type: 用例类型:param case_state: 用例状态:param case_grade: 用例等级:return:"""title,data_list=read_xmind_data(xmind_file_path)listcase=xmind_to_caselist(data_list,title,[])total_case = change_case(listcase, top_term=top_term,case_type=case_type,case_state=case_state,case_grade=case_grade)write_excel_case(total_case,save_path)

运行结果图如下:

四、总结

实现该需求并不是很难,主要是使用对应库解析数据并保存,目前只是实现了脚本,后续继续学习,希望把脚本转换成Tkinter桌面应用,使用更方便。

xmind转Excel测试用例相关推荐

  1. Xmind转Excel测试用例 Java篇

    目录 前言: Excel用例模板如下: XMind XML XMind用例格式: 约束条件: 项目目录结构如下: 工具界面如下: pom文件: log4j2.xml: UI类Excel2XMLUI 如 ...

  2. 【Python】将xmind写的测试用例转成禅道可导入的excel格式

    xmind转excel的过程 (1).读取xmind中的内容,使用xmindparser第三方库实现xmind内容的读取 (2).将内容进行处理后保存至excel中,而本次使用的是pandas库将内容 ...

  3. python+unittest+requests+HTMLTestRunner 框架通过读取excel测试用例实现接口自动化测试

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.接口自动化框架目录 二.读取相应配置文件testFile目录 1.创建配置文件 2.获取当前目录代码getpathinf ...

  4. 【测试工具】Xmind思维导图一键生成Excel测试用例

    测试的小伙伴应该经常会遇到一个问题,就是在进行测试需求点分析时都会使用Xmind思维导图工具进行测试点的分析,写完之后再编将其编写成对应的Excel格式的文档,方便导入到测试管理管理工具如禅道之类的系 ...

  5. python xmind转excel 知乎_XMind: ZEN 重磅更新!新增导出Word/Excel,自定义快捷键和其他...

    重磅! XMind: ZEN 升级了! 自 XMind: ZEN 上线以来,我们收到了很多很棒的建议.在过去几个月里,我们不断优化和升级,终于迎来了这次大版本更新: 1.更多导入导出选项,优化工作流 ...

  6. python xmind转excel 知乎_Xmind 8 Pro v3.7.7 build – 最好用的思维导图工具之

    Xmind是一款非常流行的思维导图工具,在Mac和Windows都有客户端,曾被著名互联网媒体Lifehacker评选为"一款头脑风暴和思维导图工具"及"受欢迎的思维导图 ...

  7. 如何利用python将xmind转为Excel?

    1.环境准备 需要先安装xmindparser模块,安装方法较为简单,直接运行pip命令即可. pip install xmindparser 2.源数据构造及流程解析 2.1 准备xmind文件 构 ...

  8. 项目过程管理(三)文档组织规范

    总则 所有文档以在线文档系统(Online Documentation System,下文简称ODS)为中心进行管理,ODS不方便存放的东西才放到SVN(或Git).因为ODS有URL链接可以点击直达 ...

  9. 图形化界面的Xmind用例转excel工具

    界面 convert.py xmind转换为excel # !/Desktop/codearea/pytestlearn2/venv/bin/python3.9 """ ...

最新文章

  1. 大自然创作的分形艺术
  2. IOS 之__bridge__bridge_transfer和__bridge_retained
  3. rhel iptables只允许限定IP访问某端口、某特定网站
  4. boost::hana::take_while用法的测试程序
  5. VUE $SET源码
  6. 系统集成项目管理视频课程
  7. 2020年java最新招聘_2021年北京Java 工程师招聘-北京Java 工程师招聘求职信息-拉勾招聘...
  8. MyBatis→优缺点、select延迟加载、接口式MyBatis编程、一级缓存、二级缓存、集成Redis自定义缓存、Log4j
  9. MarkdownPad2
  10. 揭露微信朋友圈当中出现刷票群0.01一票微信号、刷票0.01一票微信号的虚假面目
  11. 在线生成android ios icon,一键生成Android/Android-HD/IOS 多尺寸ICON
  12. 基于FPGA的SD卡音乐播放器之SD卡篇
  13. android MediaRecorder录屏时带录音功能实现
  14. 二阶梯度优化新崛起,超越 Adam,Transformer 只需一半迭代量
  15. MSP430之仿真器驱动安装问题
  16. 用C++实现魔方并输出步骤
  17. 4.3 人工智能典型岗位的能力要求
  18. 客户开发篇 | 外贸业务员怎么打电话开发跟进客户呢?
  19. 电大计算机科学与技术专业论文,国家开放大学计算机科学与技术专业毕业设计(论文)要求...
  20. 【ProVerif学习笔记】7:基本建模特性

热门文章

  1. windows下结束进程命令
  2. [ROC-RK3568-PC] 手把手教你编译Linux_SDK并打包Ubuntu系统固件
  3. vue-cli 项目踩坑 npm install 时出错
  4. Flume 常见配置zo
  5. bzoj 4605 崂山白花蛇草水
  6. 中标麒麟NeokylinV7关闭广播消息
  7. react-native 性能优化,处理卡顿
  8. 淘宝 API 开发步骤
  9. 图解JVM垃圾回收机制
  10. 教你如何用C++快速生成1000万个随机数