火爆全网,测试用例技巧-Python实现XMind测试用例转Excel测试用例

本文介绍了如何使用Python将XMind编写的测试用例转换为Excel格式,探讨了测试用例设计原则,如有效性、清晰性和可复用性,并提供了Python实现的详细步骤,包括代码解析和转换思路。
摘要由CSDN通过智能技术生成


前言

自动化测试:https://www.bilibili.com/video/BV1MS4y1W79K/

测试用例设计的基本原则包括:有效性、清晰性、可复用性、可维护性、完整性、兼容性、易操作性、可管理性、可评估性。

有效性
测试用例步骤必须描述清晰,不能出现模棱两可的以及重复的话语,测试用例应该按照一定的顺序进行编写,这样执行的时候效率比较高。

清晰性
用例的操作步骤要描述清晰,包含清晰的输入数据以及预期输出,验证点必须明确清晰,并能突出重点,对于流程性的用例建议按照流程顺序进行用例安排,从第一个验证点到最后一个验证点,组成流程的开始到结束,方便测试执行。测试用例包含前置条件的必须将前置条件描述清楚,包括入口等。

可复用性
可重复使用,并尽量将具有相似功能的测试用例抽象并归类。

测试用例编写要素:

用例编号:用例的唯一标识
测试模块:测试用例所属模块
用例标题:测试用例的简要说明
前提条件:用例执行的前提
测试步骤:执行用例步骤
预期结果:应该得到的结果
优先级:用例重要程度

XMind 和 Excel 是在日常测试工作中最常用的两种用例编写形式,两者也有各自的优缺点。

使用 XMind 编写测试用例更有利于测试思路的梳理,以及更加便捷高效,用例评审效率更高,但是由于每个人使用 XMind 的方式不同,设计思路也不一样,可能就不便于其他人执行和维护。

使用 Excel 编写测试用例由于有固定的模板,所以可能更加形式化和规范化,更利于用例管理和维护,以及让其他人更容易执行用例,但是最大的缺点就是需要花费更多的时间成本。

Python 编写实现 XMind 测试用例转 Excel 用例。

设计思路

Excel 测试用例模板样式如下图所示:

请添加图片描述

表头固定字段:序号、模块、功能点

为了让脚本更加灵活,后面的字段会根据 XMind 中每一个分支的长度自增,例如:测试点 / 用例标题、预期结果、实际结果、前置条件、操作步骤、优先级、编写人、执行人等

根据 Excel 模板编写对应的 XMind 测试用例:

请添加图片描述

实现:

将 XMind 中的每一条分支作为一条序号的用例,再将每个字段写入 Excel 中的每一个单元格中

请添加图片描述

修改一下表格:

请添加图片描述

完整代码

from typing import List, Any
import xlwt
from xmindparser import xmind_to_dict


def resolve_path(dict_, lists, title):
    """
    通过递归取出每个主分支下的所有小分支并将其作为一个列表
    :param dict_:
    :param lists:
    :param title:
    :return:
    """
    # 去除title首尾空格
    title = title.strip()
    # 若title为空,则直接取value
    if len(title) == 0:
        concat_title = dict_["title"].strip()
    else:
        concat_title = title + "\t" + dict_["title"].strip()
    if not dict_.__contains__("topics"):
        lists.append(concat_title)
    else:
        for d in dict_["topics"]:
            resolve_path(d, lists, concat_title)


def xmind_to_excel(list_, excel_path):
    f = xlwt.Workbook()
    # 生成单sheet的Excel文件,sheet名自取
    sheet = f.add_sheet("XX模块", cell_overwrite_ok=True)

    # 第一行固定的表头标题
    row_header = ["序号", "模块", "功能点"]
    for i in range(0, len(row_header)):
        sheet.write(0, i, row_header[i])

    # 增量索引
    index = 0

    for h in range(0, len(list_)):
        lists: List[Any] = []
        resolve_path(list_[h], lists, "")
        # print(lists)
        # print('\n'.join(lists))  # 主分支下的小分支

        for j in range(0, len
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值