最近,我在做项目的时候,经常被问到一个问题:如何做测试评审会更有效呢?
  只要做过测试用例评审,特别是比较复杂的测试用例评审的时候,很多测试同学都会苦恼于如何能更有效的向大家说出自己的测试设计思路。
  当然,CC先生的建议是测试用例评审更多的是测试范围的确认,测试方案的讨论和测试思路的对齐。
  如何能更好的体现出测试设计思路?
  推荐大家使用的可视化工具是脑图。脑图PC版里被使用比较多的工具就是xmind。
  可大家很苦恼的问题在于有时候公司会有测试用例存档的要求。也就是有一个从测试设计思路到测试用例Excel保存的需求。
  xmind pro版是有直接从xmind导为excel表格的功能,but,好多同学不屑于买pro版(其实是qiong),那怎么办呢?一句老话,自己动手,丰衣足食咯。
  先看看最后的效果图:
  xmind2excel
  其中会用到的python的知识点为:
  xml文件读取 xml etree的用法
  excel表格的写入
  python 参数解析内嵌库 argparse argparse - 命令行选项与参数解析(译)
  转化步骤
  1.xmind中创建所需文件,以freemind的格式导出,导出文件的后缀名为*.mm的文件
  2.*.mm的文件本身是xml展现
  3.通过python把xml文件处理为excel表格形式
  import xml.etree.ElementTree as ET
  import xlwt
  import argparse
  g_row = 0
  def do_write_excel(text, row, col):
  ws.write(row, col, text)
  #通过递归的获取子节点的形式达到获取 xml 等级
  def perf_func(elem, func, level = 0):
  global g_row
  func(elem, g_row, level)
  for child in list(elem):
  name = child.get('TEXT')
  perf_func(child, func, level + 1)
  if child.find('node') is None and name is not None:
  g_row = g_row + 1
  def write_excel(elem, row, level):
  name = elem.get('TEXT')
  if name is not None:
  do_write_excel(name, row, level)
  #python 参数解析内嵌库 argparse,带两个参数
  parser = argparse.ArgumentParser()
  parser.add_argument('-i', '--input-file', type=str, dest='inputfile', required=True)
  parser.add_argument('-o', '--output-file', type=str, dest='outputfile', default='freemind2excel.xls', help='Default outputfile is freemind2excel.xls')
  args = parser.parse_args()
  if args.inputfile is None:
  parser.print_help()
  exit()
  root = ET.parse(args.inputfile)
  map_version = root.getroot()
  first_node = map_version.find('node')
  wb = xlwt.Workbook()
  ws = wb.add_sheet('freemind2excel')
  perf_func(first_node, write_excel)
  wb.save(args.outputfile)
  运行的时候,带上需要输入的文件名和输出的文件名,最后你就可以得到一个想要的excel测试用例文件啦~~~~
  如果想要测试用例文件更好看一点儿还可以加上标题行和序列号等等,大家可以自行发挥咯~
 
 
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
 
 

测试用例逐步演进-xmind2excel(Python版)测试用例逐步演进-xmind2excel(Python版)的更多相关文章

  1. appium+python+unittest 测试用例的几种加载执行方式

    利用python进行测试时,测试用例的加载方式有2种: 一种是通过unittest.main()来启动所需测试的测试模块:  一种是添加到testsuite集合中再加载所有的被测试对象,而testsu ...

  2. Python实例---利用正则实现计算器[FTL版]

    import re # 格式化 def format_str(str): str = str.replace('--', '+') str = str.replace('-+', '-') str = ...

  3. 孤荷凌寒自学python第六十一天在Fedora28版的linux系统上找搭建本地Mongodb数据服务

    孤荷凌寒自学python第六十一天在Fedora28版的linux系统上找搭建本地Mongodb数据服务 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第七天.成功在本地搭建 ...

  4. 分享《Python 游戏编程快速上手(第3版)》高清中文版PDF+高清英文版PDF+源代码

    通过编写一个个小巧.有趣的游戏来学习Python,通过实例来解释编程的原理的方式.14个游戏程序和示例,介绍了Python基础知识.数据类型.函数.流程控制.程序调试.流程图设计.字符串操作.列表和字 ...

  5. python学习_新闻联播文字版爬虫(V 1.0版)

    python3的爬虫练习,爬取的是新闻联播文字版网站 #!/usr/bin/env python # -*- coding: utf-8 -*- ''' __author__ = 'wyf349' _ ...

  6. 【转载】Stackless Python并发式编程介绍[已校对版]

    Stackless Python并发式编程介绍[已校对版] 作者:    Grant Olson 电子邮件:    olsongt@verizon.net 日期:    2006-07-07 译者:  ...

  7. 《Python学习手册 第五版》 -第2章 Python如何运行程序

    第二章主要讲解了Python的运行机制, 在开始之前,需要明确以下几点 因为<Python学习手册>这本书是面向市场很多人的,既然有很多人,就有很多不一样的需求和使用情况,这本书涵盖Pyt ...

  8. 官网服务质量检测脚本(源码来自《Python自动化运维实战》第二版刘天斯)

    脚本Python版本2.7 #!/usr/bin/python #-*- coding:utf-8 -*- import os,sys import time import sys import py ...

  9. Python 重点知识整理(基于Python学习手册第四版)

    字节型编译 如果Python在系统中有写的权限,当程序运行时Python会把源码编译成字节码(与系统环境无关)存在一个.pyc扩展名文件中,如果没有修改源码而重新运行程序时,不会进行编译的步骤而使用字 ...

  10. Python游戏编程入门 中文pdf扫描版|网盘下载内附地址提取码|

    Python是一种解释型.面向对象.动态数据类型的程序设计语言,在游戏开发领域,Python也得到越来越广泛的应用,并由此受到重视. 本书教授用Python开发精彩游戏所需的[]为重要的该你那.本书不 ...

随机推荐

  1. 生产者与消费者-1:N-基于list

    一个生产者/多个消费者: /** * 生产者 */ public class P { private MyStack stack; public P(MyStack stack) { this.sta ...

  2. Luogu 4310 绝世好题

    BZOJ 4300 先把这堆东西丢到博客里,以后再复习. 首先考虑暴力的$dp$,设$f_i$表示以$i$结尾的满足条件的序列的最长长度,有: $f_i = max(f_j) + 1$    $j & ...

  3. Luogu 1641 [SCOI2010]生成字符串

    结果和dp没有一点关系…… 30分算法:设$f_{i, j}$表示已经选了$i$个并且有$j$个是白色的状态数,转移显然,最后答案就是$f_{n + m, m}$,时间复杂度$O(n^{2})$. 1 ...

  4. python sort、sorted、reverse、reverd的区别

    sort.sorted.reverse.reversed的区别 !!! error 首先应该区分的是,sort和reverse是列表的一个方法.字符串.元组.字典.集合是没有这两个方法的.而sorte ...

  5. 国外物联网平台(3):IBM Watson IoT

    国外物联网平台(3)——IBM Watson IoT 马智 平台定位 提供全面管理的云托管服务,旨在简化并从 IoT 设备中获得价值. Watson IoT Platform 提供对 IoT 设备和数 ...

  6. C/C++中char* p = "hello" 和 const char* p = "hello"的区别

    在写代码常常都会写char * p ="hello";这样的代码,虽然不是错误,但却不建议这样用.应该加const修饰.这句话背后的内涵是什么?下面就刨根问底一下:) 这个行为在不 ...

  7. java 学习第三篇if判断

    JAVA 判断 单词: if 如果 else 否则 单分支: If(条件) { 代码块 } If是一个判断语句.代码格式如上. If括号的内是表达式.如果表达式值是成立的便执行代码块.之后在执行IF语 ...

  8. HTTP状态码了解

    1xx   - - 消息 2xx   - - 成功 3xx   - - 重定向 4xx   - - 请求错误 5xx   - - 服务器错误 1xx-信息提示 这些状态代码表示临时的响应.客户端在收到 ...

  9. [poj 1185] 炮兵阵地 状压dp 位运算

    Description 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用&quo ...

  10. 如果Laravel 报错 file_put_contents(): failed to open stream

    问题解决方法 执行命令 php artisan cache:clear 并赋予 /storage 文件夹读写权限: chmod -R 777 storage: 若在执行 php artisan cac ...