【xmind converse excel】测试用例定制化小工具
背景
公司使用jira, jira写测试用例,jira可以通过execl导入进jira, 生成测试用例,但是模板很不统一,如果只是再execl中修改,又觉得及其的麻烦,所以写了一个xmind 转化为定制版本的execl测试用例,便于更好的写测试去思考,而不是让费在修改execl中
jira用例分析
- 分析,根据jira中提供的模板,我们可以知道,每个testid对应相同的id,path,priority,tag,summary(描述),tag,description, 但是一个testid可能有多个步骤,每个步骤对应一个结果

- 根据上述我们可以设计xmind的测试用例模板

脚本编写
我们分析后,就可以为我们编写定制版本的测试用例,首先我们设计好xmind的测试模板后,我们需要解析xmind,这边使用xmindparser, openpyxl
解析xmind
pip install xmindparser
from xmindparser import xmind_to_dict
data = xmind_to_dict("test module.xmind")
print(data)

- 分析输入的列表信息,我们只需要提取我们需要的信息就可以,这边需要花点耐心去获取,并不难,这边就省略了,主要用到了for循环,以及对列表的信息分析
xmind_testcase.py
__author__ = 'wangxiao'
import json
from xmindparser import xmind_to_dict
from utils.execl_config import ExcelConfig
class ExportXmindExcel:
def __init__(self):
self.name = input("请输入绝对路径:")
self.data = xmind_to_dict(self.name)
# 获取测试用例dict格式
self.dict_data = self.data[0]
# 实例化execlConfig
self.execl = ExcelConfig()
# 提取多少条case
def get_cases_nums(self):
nums = self.dict_data['topic']['topics'][0]['topics']
return len(nums)
# 提取cases list
def get_cases(self):
return self.dict_data['topic']['topics'][0]['topics']
# 提取Test Repository Path
def get_case_path(self, i):
self.casesList = self.get_cases()
index = self.casesList[i]['title']
path = self.casesList[i]['topics'][0]['topics'][0]['title']
tag = self.casesList[i]['topics'][1]['topics'][0]['title']
priority = self.casesList[i]['topics'][2]['topics'][0]['title']
summary = self.casesList[i]['topics'][3]['topics'][0]['title']
des = self.casesList[i]['topics'][5]['topics'][0]['title']
return index, path, tag, priority, summary, des
# 提取action = (步骤+对应的步骤结果)
def get_actions(self, num):
return self.casesList[num]['topics'][4]['topics']
# 处理action,分别提取步骤 = 结果
def get_case_detail(self, num, list):
step = list[num]['title']
res = list[num]['topics'][0]['title']
return step, res
# 把每次循环的数据,放到字典中
def converse_dict(self, num):
index, path, tag, priority, summary, des = self.get_case_path(num)
case_dict = {}
case_dict['index'] = index
case_dict['path'] = path
case_dict['tag'] = tag
case_dict['priority'] = priority
case_dict['summary'] = summary
case_dict['des'] = des
case_dict['action'] = self.get_actions(num)
return case_dict
# 执行函数
def run(self):
nums = self.get_cases_nums()
# 声明全局变量
global number
# 写入单元格从第二行开始
number = 2
for i in range(0, nums):
cases = self.converse_dict(i)
actions = cases['action']
nums2 = len(actions)
for j in range(0, nums2):
args = self.get_case_detail(j, actions)
self.execl.run(number, args, index=cases['index'], path=cases['path'], tag=cases['tag'], priority=cases['priority'], summary=cases['summary'], des=cases['des'])
number +=1
print("--------------execl已经生成---------------")
main = ExportXmindExcel()
main.run()
execl_config.py
__author__ = 'wangxiao'
import openpyxl
class ExcelConfig:
ID = 1
PATH = 2
PRIORITY = 3
TAG = 4
SUMMARY = 5
ACTION = 6
RESULT = 7
DESCRIPTION = 8
def __init__(self):
self.wb = openpyxl.Workbook()
self.sh = self.wb.create_sheet('test_case')
def init_execl(self):
self.sh.cell(row=1, column=self.ID, value='Test ID')
self.sh.cell(row=1, column=self.PATH, value='Test Repository Path')
self.sh.cell(row=1, column=self.PRIORITY, value='Priority')
self.sh.cell(row=1, column=self.TAG, value='Tag')
self.sh.cell(row=1, column=self.SUMMARY, value='Summary')
self.sh.cell(row=1, column=self.ACTION, value='Action')
self.sh.cell(row=1, column=self.RESULT, value='Result')
self.sh.cell(row=1, column=self.DESCRIPTION, value='Description')
def write_cases(self, i, *args, **kwargs):
self.sh.cell(row=i, column=self.ID, value=str(kwargs['index']))
self.sh.cell(row=i, column=self.PATH, value=kwargs['path'])
self.sh.cell(row=i, column=self.PRIORITY, value=kwargs['priority'])
self.sh.cell(row=i, column=self.TAG, value=kwargs['tag'])
self.sh.cell(row=i, column=self.SUMMARY, value=kwargs['summary'])
self.sh.cell(row=i, column=self.DESCRIPTION, value=kwargs['des'])
self.sh.cell(row=i, column=self.ACTION, value=args[0][0])
self.sh.cell(row=i, column=self.RESULT, value=args[0][1])
def run(self, i, *args, **kwargs):
self.init_execl()
self.write_cases(i, *args, **kwargs)
self.wb.save('case.xlsx')
打包成小工具
- 打包成小工具,方便其他人使用这个小工具
pip insall pyinstaller
# 打包命令
pyinstaller -F xmind_testcase.py -p execl_config.py
- 效果演示


总结
项目只是参考,每个公司需要都不一样,主干是一样的,主要是去分析
【xmind converse excel】测试用例定制化小工具的更多相关文章
- kettle系列-4.kettle定制化开发工具类
要说的话这个工具类还是比较简单的,每个方法体都比较小,但用起来还是可以的,把开发中一些常用的步骤封装了下,不用去kettle源码中找相关操作的具体实现了. 算了废话不多了,直接上重点,代码如下: im ...
- C#7.2——编写安全高效的C#代码 c# 中模拟一个模式匹配及匹配值抽取 走进 LINQ 的世界 移除Excel工作表密码保护小工具含C#源代码 腾讯QQ会员中心g_tk32算法【C#版】
C#7.2——编写安全高效的C#代码 2018-11-07 18:59 by 沉睡的木木夕, 123 阅读, 0 评论, 收藏, 编辑 原文地址:https://docs.microsoft.com/ ...
- 移除Excel工作表密码保护小工具含C#源代码
有朋友发了个Excel.xlsx文件给我,让我帮忙看看里面是怎么做出来的.打开审阅后发现,每个Excel工作表都添加了密码保护: 看不到里面的隐藏列和公式等等,感觉很神秘.于是研究了一下Excel文件 ...
- Oracle Sales Cloud:管理沙盒(定制化)小细节1——利用公式创建字段并显示在前端页面
Oracle Sales Cloud(Oracle 销售云)是一套基于Oracle云端的CRM管理系统.由于 Oracle 销售云是基于 Oracle 云环境的,它与传统的管理系统相比,显著特点之一便 ...
- EasyUseCase 一款脑图转化 Excel 测试用例工具 (1.2 版本升级)
EasyUseCase 本工具由本人自主开发.经过内部实践有效提升测试用例编写效率200% 覆盖率可度量.利用读取xmind软件图表转换符合国人基本需求的测试用例,让手动写Excel用例的日子过去,发 ...
- 【Python】Python实现Excel用例直接导入testlink-UI界面小工具
1.写在前面 testlink上传用例一种方法是excel转换为xml,然后再用xml上传,还有一种是调用api进行上传.最开始写了个转换工具,是将excel转换为xml,然后在testlink里上传 ...
- JavaGUI练习 - 正交测试用例生成小工具
正交表生成小工具 说明 小工具的适用对象主要是测试人员,他们日常工作中手动设计大量测试用例,工作繁杂甚至还存在覆盖不全面等问题. 为了提高他们的测试效率,该小工具可以通过输入一组多因素多水平的数据,然 ...
- python提效小工具-统计xmind用例数量
问题:做测试的朋友们经常会用到xmind这个工具来梳理测试点或写测试用例,但是xmind8没有自带的统计测试用例,其他版本的xmind有些自带节点数量统计功能,但也也不会累计最终的数量,导致统计测试工 ...
- Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段
在上一篇 "管理沙盒(定制化)小细节1" 的随笔中,我们使用公式法在 "业务机会" 对象(单头)上建立了 "利润合计" 字段,并将它等于 & ...
随机推荐
- Tensorflow学习笔记No.9
模型的保存与恢复 介绍一些常见的模型保存与恢复方法,以及如何使用回调函数保存模型. 1.保存完整模型 model.save()方法可以保存完整的模型,包括模型的架构.模型的权重以及优化器. model ...
- Triple的使用
public Triple<Long, Long, Double> getCarRunSummary(String did, Date startDate, Date endDate) { ...
- Spring源码分析之Bean的创建过程详解
前文传送门: Spring源码分析之预启动流程 Spring源码分析之BeanFactory体系结构 Spring源码分析之BeanFactoryPostProcessor调用过程详解 本文内容: 在 ...
- OpenCV计算机视觉学习(9)——图像直方图 & 直方图均衡化
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 1, ...
- 12 Servlet_04 Servlet增删改查 静态页面与动态页面 EL表达式 table表格的一些样式
今天学习了servlet的增删改查: 存储数据 setAttribute(String name,Object obj );获取数据 getAttribute(String name);删除数据 re ...
- Pytest框架中,conftest.py文件的作用?
conftest.py文件,它主要是实现fixture共享的. 第一,conftest.py文件当中,它储存的都是fixture,就是给用例提供做前置准备工作和后置清理工作的一个东西: 第二,conf ...
- 20202427-张启辰《Python3初学:罗马数字转阿拉伯数字》
目录 20202427-张启辰<Python3初学:罗马数字转阿拉伯数字> 1.规则 2.局限性 3.Python3解决 20202427-张启辰<Python3初学:罗马数字转阿拉 ...
- FloodFill算法详解及应用
啥是 FloodFill 算法呢,最直接的一个应用就是「颜色填充」,就是 Windows 绘画本中那个小油漆桶的标志,可以把一块被圈起来的区域全部染色. 这种算法思想还在许多其他地方有应用.比如说扫雷 ...
- VC中句柄、指针、ID之间的转换
win32直接操作的是句柄HANDLE,每个句柄就对应windows窗口,而vc对HANDLE进行类封装,间接操作的都是HANDLE,现在句柄只是类的一个成员变量. 从句柄到指针 CWnd* pWnd ...
- 1.深入Istio:Sidecar自动注入如何实现的?
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 本文使用的Istio源码是 release 1.5. 这篇文章打算讲一下sidecar, ...