【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" 的随笔中,我们使用公式法在 "业务机会" 对象(单头)上建立了 "利润合计" 字段,并将它等于 & ...
随机推荐
- rsync 守护进程模式搭建 与常见报错
守护进程模式搭建 1.环境准备 2.安装rsync(做备份的服务器都安装) [root@backup ~]# yum install -y rsync 3.服务端配置 [root@backup ~]# ...
- Mybatis---07Mybatis配置文件浅析(五)
1.environments:MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做.例如,开发.测试和生产环境需要有不同的配置: ...
- AtCoder Grand Contest 013D: Piling Up 题解
题意简化: [luogu] Piling Up 一开始有n个颜色为黑白的球,但不知道黑白色分别有多少,m次操作,每次先拿出一个球,再放入黑白球各一个,再拿出一个球,最后拿出的球按顺序排列会形成一个颜色 ...
- DTU连接不稳定有什么办法
DTU是一种物联网的终端设备,在工业信息化的不断推进的大背景下,DTU的市场需求也越来越大,本身具有网络覆盖范围广.资费低.数据传输准确及时等众多优点.但在使用的过程中DTU会出现很多问题,比如DTU ...
- SpringCloud gateway 过滤
如果需要获取一张图片但服务器没有过滤图片请求地址时,每次请求图片都需要携带token等安全验证密钥,可到nacos配置网关(gateway)的security配置,可过滤掉你配置的url(可理解为白名 ...
- 像用excel一样用pandas
1 说明 预计需要15min阅读此教材: 本教材仅讲述如何查看excel数据,筛选,排序,查找替换数据,不涉及excel中复杂的图形绘制及样式修改. 2 假设 假设,已经存在一个test.xlsx文件 ...
- Docker系列01—Docker 基础入门
一.初识Docker和容器 1.1 什么是docker 容纳其他物品的工具,可以部分或完全封闭,被用于容纳.存储.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. 容器? 容器就是在隔离的环 ...
- UDP局域网通信的Java实现及Android平台尝试
局域网通信已经很少被他人所提及了,我曾经还尝试过通过蓝牙构建通信网络,这次有机会尝试UDP局域网通信,在这里把一些基本过程和在Android平台上的问题记录一下. 1. UDP基础知识 1.1 什么是 ...
- 总结distinct、group by 、row_number()over函数用法及区别
distinct和group by 是一样的,查询去重,只能是全部重复的,也可以理解为针对单例,因为一行有一个字段不一样,他们就会认为这两行内容是不重复的.但是使用row_number()over这个 ...
- ubuntu下minicom安装和简单设置使用
minicom是一个串口通信工具. Ubuntu下的安装: 打开终端 sudo apt-get install minicom即可完成安装. 简单设置使用: 安装完成后第一次启动时运行 sudo mi ...