背景

公司使用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】测试用例定制化小工具的更多相关文章

  1. kettle系列-4.kettle定制化开发工具类

    要说的话这个工具类还是比较简单的,每个方法体都比较小,但用起来还是可以的,把开发中一些常用的步骤封装了下,不用去kettle源码中找相关操作的具体实现了. 算了废话不多了,直接上重点,代码如下: im ...

  2. 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/ ...

  3. 移除Excel工作表密码保护小工具含C#源代码

    有朋友发了个Excel.xlsx文件给我,让我帮忙看看里面是怎么做出来的.打开审阅后发现,每个Excel工作表都添加了密码保护: 看不到里面的隐藏列和公式等等,感觉很神秘.于是研究了一下Excel文件 ...

  4. Oracle Sales Cloud:管理沙盒(定制化)小细节1——利用公式创建字段并显示在前端页面

    Oracle Sales Cloud(Oracle 销售云)是一套基于Oracle云端的CRM管理系统.由于 Oracle 销售云是基于 Oracle 云环境的,它与传统的管理系统相比,显著特点之一便 ...

  5. EasyUseCase 一款脑图转化 Excel 测试用例工具 (1.2 版本升级)

    EasyUseCase 本工具由本人自主开发.经过内部实践有效提升测试用例编写效率200% 覆盖率可度量.利用读取xmind软件图表转换符合国人基本需求的测试用例,让手动写Excel用例的日子过去,发 ...

  6. 【Python】Python实现Excel用例直接导入testlink-UI界面小工具

    1.写在前面 testlink上传用例一种方法是excel转换为xml,然后再用xml上传,还有一种是调用api进行上传.最开始写了个转换工具,是将excel转换为xml,然后在testlink里上传 ...

  7. JavaGUI练习 - 正交测试用例生成小工具

    正交表生成小工具 说明 小工具的适用对象主要是测试人员,他们日常工作中手动设计大量测试用例,工作繁杂甚至还存在覆盖不全面等问题. 为了提高他们的测试效率,该小工具可以通过输入一组多因素多水平的数据,然 ...

  8. python提效小工具-统计xmind用例数量

    问题:做测试的朋友们经常会用到xmind这个工具来梳理测试点或写测试用例,但是xmind8没有自带的统计测试用例,其他版本的xmind有些自带节点数量统计功能,但也也不会累计最终的数量,导致统计测试工 ...

  9. Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段

    在上一篇 "管理沙盒(定制化)小细节1" 的随笔中,我们使用公式法在 "业务机会" 对象(单头)上建立了 "利润合计" 字段,并将它等于 & ...

随机推荐

  1. rsync 守护进程模式搭建 与常见报错

    守护进程模式搭建 1.环境准备 2.安装rsync(做备份的服务器都安装) [root@backup ~]# yum install -y rsync 3.服务端配置 [root@backup ~]# ...

  2. Mybatis---07Mybatis配置文件浅析(五)

    1.environments:MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做.例如,开发.测试和生产环境需要有不同的配置: ...

  3. AtCoder Grand Contest 013D: Piling Up 题解

    题意简化: [luogu] Piling Up 一开始有n个颜色为黑白的球,但不知道黑白色分别有多少,m次操作,每次先拿出一个球,再放入黑白球各一个,再拿出一个球,最后拿出的球按顺序排列会形成一个颜色 ...

  4. DTU连接不稳定有什么办法

    DTU是一种物联网的终端设备,在工业信息化的不断推进的大背景下,DTU的市场需求也越来越大,本身具有网络覆盖范围广.资费低.数据传输准确及时等众多优点.但在使用的过程中DTU会出现很多问题,比如DTU ...

  5. SpringCloud gateway 过滤

    如果需要获取一张图片但服务器没有过滤图片请求地址时,每次请求图片都需要携带token等安全验证密钥,可到nacos配置网关(gateway)的security配置,可过滤掉你配置的url(可理解为白名 ...

  6. 像用excel一样用pandas

    1 说明 预计需要15min阅读此教材: 本教材仅讲述如何查看excel数据,筛选,排序,查找替换数据,不涉及excel中复杂的图形绘制及样式修改. 2 假设 假设,已经存在一个test.xlsx文件 ...

  7. Docker系列01—Docker 基础入门

    一.初识Docker和容器 1.1 什么是docker 容纳其他物品的工具,可以部分或完全封闭,被用于容纳.存储.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. 容器? 容器就是在隔离的环 ...

  8. UDP局域网通信的Java实现及Android平台尝试

    局域网通信已经很少被他人所提及了,我曾经还尝试过通过蓝牙构建通信网络,这次有机会尝试UDP局域网通信,在这里把一些基本过程和在Android平台上的问题记录一下. 1. UDP基础知识 1.1 什么是 ...

  9. 总结distinct、group by 、row_number()over函数用法及区别

    distinct和group by 是一样的,查询去重,只能是全部重复的,也可以理解为针对单例,因为一行有一个字段不一样,他们就会认为这两行内容是不重复的.但是使用row_number()over这个 ...

  10. ubuntu下minicom安装和简单设置使用

    minicom是一个串口通信工具. Ubuntu下的安装: 打开终端 sudo apt-get install minicom即可完成安装. 简单设置使用: 安装完成后第一次启动时运行 sudo mi ...