背景

公司使用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. java面试之手写单例模式

    为什么要有单例模式 实际编程应用场景中,有一些对象其实我们只需要一个,比如线程池对象.缓存.系统全局配置对象等.这样可以就保证一个在全局使用的类不被频繁地创建与销毁,节省系统资源. 实现单例模式的几个 ...

  2. VueX(简)

    最近又看了vue的文档,借此整理一下知识.用于自我加深理解 vueX是vue官方推出的状态管理机制. 上面一张图是核心 主要为: State:存储数据 Mutation: 更改数据 Action: 暴 ...

  3. 【ELK】Centos7 安装 ELK 7.6.2 和 UI 管理界面以及测试例子

    1. 初始化环境 1.0 初始化环境官网参考 https://www.elastic.co/guide/en/elasticsearch/reference/current/system-config ...

  4. Luogu P6815 [PA2009]Cakes

    题意 给定一个 \(n\) 个点 \(m\) 条边的图,点 \(i\) 有权值 \(a_i\),一个三元环 \((i,j,k)\) 的贡献为 \(\max(a_i,a_j,a_k)\),求所有三元环的 ...

  5. 4G DTU的应用场景介绍

    4G DTU因为信号要比传统的gprs网络要好,目前已经被广泛应用于物联网产业链中的M2M行业,以远向4G DTU LTE-520为例,它的应用场景如智能电网.智能交通.智能家居.金融.移动 POS ...

  6. Day12 HTML知识

    1.html初识 超文本标记语言(Hypertext Markup Language,HTML)通过标签语言来标记要显示的网页中的各个部分.一套规则,浏览器认识的规则 浏览器按顺序渲染网页文件,然后根 ...

  7. Jmeter 获取系统时间

    ${__time(yyyy-MM-dd HH:mm:ss:SSS,time)} :格式化生成时间格式 2020-11-03 21:59:13:658

  8. 一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试

    一:背景 1. 讲故事 每次项目预交付的时候,总会遇到各种奇葩的坑,我觉得有必要梳理一下以及如何快速解决的,让后来人避避坑,这篇就聊聊自己的所闻所遇: 我去,本地环境代码跑的哧溜,上了测试环境出问题 ...

  9. rabbitmq-参考

    rabbitMQ http://lynnkong.iteye.com/blog/1699684 http://jzhihui.iteye.com/category/195005

  10. offsetWidth与offsetHeight

    HTMLElement.offsetWidth 是一个只读属性,返回一个元素的布局宽度.一个典型的(译者注:各浏览器的offsetWidth可能有所不同)offsetWidth是测量包含元素的边框(b ...