背景

公司使用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. 你不知道的那些js调试命令

    通常情况下,我们在调试js程序的时候一般都使用console.log()来进行程序的调试,打印自己所需要的内容什么的. 那么js的调试命令可不止一个console.log() 分类输出 console ...

  2. for循环使用体会

    最近在看源码的时候看到了以下代码: Class[] var2 = componentClasses; int var3 = componentClasses.length; for(int var4 ...

  3. Java 运行时动态生成class

    转载 http://www.liaoxuefeng.com/article/0014617596492474eea2227bf04477e83e6d094683e0536000 Java是一门静态语言 ...

  4. 测试TwemProxy的应知应会

    一.背景 最近中间件开发组对twemproxy的发现注册机制做了改造,之前没有接触过twemproxy,借这次测试的机会,初步学习了一下twemproxy相关的知识:下面用"测试语言&quo ...

  5. Dcoker 安装 rabbitMq

    使用Docker安装部署RabbitMQ   1.docker search rabbitmq:management     2.docker pull rabbitmq:management     ...

  6. 【Kata Daily 190912】Alphabetical Addition(字母相加)

    题目: Your task is to add up letters to one letter. The function will be given a variable amount of ar ...

  7. Lagrange插值C++程序

    输入:插值节点数组.插值节点处的函数值数组,待求点 输出:函数值 代码如下:把printf的注释取消掉,能打印出中间计算过程,包括Lagrange多项式的求解,多项式每一项等等(代码多次修改,这些pr ...

  8. MVC中Cookie的用法(二)---CookieHelper

    public class CookieHelper { /// <summary> /// 1.1添加Cookie /// </summary> /// <param n ...

  9. javaweb项目中jsp的from表单提交action内容与web.xml的servlet-mapping对应

    login.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> ...

  10. Find Any File for Mac(文件搜索软件)v2.1.2b6

    Find Any File for Mac是应用在Mac上的一款文件搜索工具,Find Any File Mac可以通过名称.创建或修改日期,大小或类型和创建者代码(而不是内容)在本地磁盘上搜索文件. ...