首页 > 其他分享 >测试工程师效率提升系列第二篇:测试用例管理自动化——从 Excel 到结构化数据

测试工程师效率提升系列第二篇:测试用例管理自动化——从 Excel 到结构化数据

时间:2025-01-23 14:30:21浏览次数:3  
标签:Excel write 用例 测试用例 测试 test cases 第二篇

在测试工程师的日常工作中,测试用例管理 是一个重要环节。很多团队仍然依赖于 Excel 表格 来管理测试用例,包含用例描述、步骤、预期结果等内容。然而,这种方式存在以下痛点:

  1. 难以复用:Excel 文件往往是静态的,无法直接与自动化脚本关联。
  2. 易出错:人工更新用例容易遗漏或引入错误,特别是大规模用例变更时。
  3. 协作不便:多人编辑同一个 Excel 文件时容易冲突,版本管理困难。
  4. 不适配自动化测试:Excel 数据无法直接被自动化测试框架使用,需手动转换为代码。

本篇文章将围绕这些痛点展开,提供切实可行的解决方案:将 Excel 测试用例转换为结构化数据(如 JSON 或 YAML),并与自动化测试框架无缝对接


1. 功能目标

我们将实现以下功能:

  1. 解析 Excel 测试用例文件:读取测试用例数据,包括用例标题、步骤、预期结果等。
  2. 转换为结构化数据:将测试用例导出为 JSON 或 YAML 格式,便于自动化测试框架直接使用。
  3. 生成自动化脚本模板:基于解析的用例数据,自动生成 Playwright 或 Selenium 测试脚本模板,加速自动化测试开发。

2. 环境准备

在实现之前,需要安装以下依赖库:

pip install pandas openpyxl pyyaml
  • pandas:用于解析和处理 Excel 数据。
  • openpyxl:支持读取和写入 Excel 文件(.xlsx 格式)。
  • pyyaml:用于生成和解析 YAML 数据。

3. 设计 Excel 测试用例模板

Excel 文件结构设计
我们设计一个简单的测试用例 Excel 模板,包含以下列:

用例编号用例标题操作步骤预期结果优先级
TC001登录页面功能验证输入用户名和密码,点击登录按钮成功跳转到主页
TC002密码错误验证输入错误密码,点击登录按钮显示“密码错误”提示
TC003空密码验证用户名正确,密码为空,点击登录按钮显示“请输入密码”提示

4. 从 Excel 到结构化数据

4.1 解析 Excel 文件

我们通过 pandas 读取 Excel 文件,并将其转化为 Python 的字典或 JSON 格式:

import pandas as pd  

def parse_excel_to_dict(file_path):  
    # 读取 Excel 文件  
    df = pd.read_excel(file_path)  
    
    # 将每一行转化为字典  
    test_cases = df.to_dict(orient="records")  
    
    return test_cases  

# 示例调用  
file_path = "test_cases.xlsx"  
test_cases = parse_excel_to_dict(file_path)  
print(test_cases)  

输出示例(字典格式)

[  
    {  
        "用例编号": "TC001",  
        "用例标题": "登录页面功能验证",  
        "操作步骤": "输入用户名和密码,点击登录按钮",  
        "预期结果": "成功跳转到主页",  
        "优先级": "高",  
    },  
    {  
        "用例编号": "TC002",  
        "用例标题": "密码错误验证",  
        "操作步骤": "输入错误密码,点击登录按钮",  
        "预期结果": "显示“密码错误”提示",  
        "优先级": "中",  
    }  
]

4.2 导出为 JSON 或 YAML

导出为 JSON 文件
import json  

def export_to_json(test_cases, output_path="test_cases.json"):  
    with open(output_path, "w", encoding="utf-8") as f:  
        json.dump(test_cases, f, ensure_ascii=False, indent=4)  
    print(f"测试用例已导出为 JSON 文件:{output_path}")  

# 示例调用  
export_to_json(test_cases)  
导出为 YAML 文件
import yaml  

def export_to_yaml(test_cases, output_path="test_cases.yaml"):  
    with open(output_path, "w", encoding="utf-8") as f:  
        yaml.dump(test_cases, f, allow_unicode=True, default_flow_style=False)  
    print(f"测试用例已导出为 YAML 文件:{output_path}")  

# 示例调用  
export_to_yaml(test_cases)  

5. 自动生成自动化测试脚本

为了加速测试开发,我们可以基于解析的测试用例数据,自动生成 Playwright 或 Selenium 测试脚本模板。

5.1 生成 Playwright 测试脚本模板

def generate_playwright_script(test_cases, output_path="test_script.py"):  
    with open(output_path, "w", encoding="utf-8") as f:  
        f.write("from playwright.sync_api import sync_playwright\n\n")  
        f.write("def test_cases():\n")  
        f.write("    with sync_playwright() as p:\n")  
        f.write("        browser = p.chromium.launch(headless=False)\n")  
        f.write("        page = browser.new_page()\n\n")  

        for case in test_cases:  
            f.write(f"        # {case['用例编号']}: {case['用例标题']}\n")  
            f.write(f"        # 操作步骤: {case['操作步骤']}\n")  
            f.write(f"        # 预期结果: {case['预期结果']}\n")  
            f.write("        # TODO: 添加具体的测试逻辑\n\n")  

        f.write("        browser.close()\n")  
    print(f"Playwright 测试脚本模板已生成:{output_path}")  

# 示例调用  
generate_playwright_script(test_cases)  

生成的测试脚本模板示例

from playwright.sync_api import sync_playwright  

def test_cases():  
    with sync_playwright() as p:  
        browser = p.chromium.launch(headless=False)  
        page = browser.new_page()  

        # TC001: 登录页面功能验证  
        # 操作步骤: 输入用户名和密码,点击登录按钮  
        # 预期结果: 成功跳转到主页  
        # TODO: 添加具体的测试逻辑  

        # TC002: 密码错误验证  
        # 操作步骤: 输入错误密码,点击登录按钮  
        # 预期结果: 显示“密码错误”提示  
        # TODO: 添加具体的测试逻辑  

        browser.close()  

5.2 生成 Selenium 测试脚本模板

类似地,我们可以为 Selenium 自动生成测试脚本模板:

def generate_selenium_script(test_cases, output_path="test_script_selenium.py"):  
    with open(output_path, "w", encoding="utf-8") as f:  
        f.write("from selenium import webdriver\n\n")  
        f.write("def test_cases():\n")  
        f.write("    driver = webdriver.Chrome()\n\n")  

        for case in test_cases:  
            f.write(f"    # {case['用例编号']}: {case['用例标题']}\n")  
            f.write(f"    # 操作步骤: {case['操作步骤']}\n")  
            f.write(f"    # 预期结果: {case['预期结果']}\n")  
            f.write("    # TODO: 添加具体的测试逻辑\n\n")  

        f.write("    driver.quit()\n")  
    print(f"Selenium 测试脚本模板已生成:{output_path}")  

# 示例调用  
generate_selenium_script(test_cases)  

6. 输出效果展示

JSON 文件

[
    {
        "用例编号": "TC001",
        "用例标题": "登录页面功能验证",
        "操作步骤": "输入用户名和密码,点击登录按钮",
        "预期结果": "成功跳转到主页",
        "优先级": "高"
    },
    {
        "用例编号": "TC002",
        "用例标题": "密码错误验证",
        "操作步骤": "输入错误密码,点击登录按钮",
        "预期结果": "显示“密码错误”提示",
        "优先级": "中"
    }
]

Playwright 脚本模板

# 示例见上文生成的 Playwright 脚本

Selenium 脚本模板

# 示例见上文生成的 Selenium 脚本

7. 小结

通过本篇文章,我们实现了从 Excel 测试用例文件到结构化数据的自动化转换,并进一步生成了自动化测试脚本模板。

亮点

  1. 兼容性强:支持 Excel 文件的解析,便于与现有测试用例管理方式对接。
  2. 直接适配自动化测试框架:将用例数据转化为 JSON 或 YAML 格式,可直接用于 Playwright 或 Selenium 测试。
  3. 加速脚本开发:基于用例数据自动生成测试脚本模板,减少重复工作量。

下一篇预告:我们将在下一篇文章中探索 接口测试的自动化与 Mock 数据解决方案,帮助你在接口测试中摆脱环境依赖,快速实现高效的接口验证。敬请期待!

标签:Excel,write,用例,测试用例,测试,test,cases,第二篇
From: https://blog.csdn.net/weixin_44872675/article/details/145296516

相关文章

  • 《SpringBoot》EasyExcel实现百万数据的导入导出
    24年11月6日消息,阿里巴巴旗下的JavaExcel工具库EasyExcel近日宣布,将停止更新,未来将逐步进入维护模式,将继续修复Bug,但不再主动新增功能。EasyExcel是一款知名的JavaExcel工具库,由阿里巴巴开源,作者是玉箫,在GitHub上有30k+stars、7.5kforks。据了解,EasyExcel作者玉箫去......
  • Spring Boot3集成FastExcel实现百万级Excel导入(附源码)
    什么是FastExcelFastExcel是由原EasyExcel作者创建的最新作品。在2023年作者从阿里离职后,随着阿里宣布停止更新EasyExcel,原作者决定继续维护和升级这个项目。在重新开始时,选择为它起名为FastExcel,以突出这个框架在处理Excel文件时的高性能表现,而不仅仅是简单易用。Fas......
  • 第二篇 Django的模版各功能示例 以及 初学者常见问题
    目录1、Django模版环境配置2、本项目遇到的问题:UsingtheURLconfdefinedinHelloWorld.urls,DjangotriedtheseURLpatterns,inthisorder:3、Django模版常用语法规则变量1、Django模版环境配置我们接着上一篇文章项目将在HelloWorld目录底下创建templat......
  • Excel 技巧13 - 如何使用计算带单位的数据(★★★),神奇的Ctrl+E 都能干什么?(合并数据,拆
    本文讲了如何在Excel中计算带单位的数据。然后还讲了神奇的快捷键Ctrl+E的功能。目录1,如何统计带单位的数据1-1,先用一个替代1-2,Ctrl+E按相同规则提取所有数据1-3,替换掉多余的替代-S2,Ctrl+E快捷键都能干什么?2-1,合并数据2-2,拆分数据2-3,提取数据2-4,数据格式化2-5......
  • Spring Boot + Apache POI 实现 Excel 导出:BOM物料清单生成器(支持中文文件名、样式美
    目录引言ApachePOI操作Excel的实用技巧1.合并单元格操作2.设置单元格样式1.创建样式对象2.设置边框3.设置底色4.设置对齐方式5.设置字体样式6.设置自动换行7.应用样式到单元格3.定位和操作指定单元格4.实现标签-值的形式5.列宽设置1.设置单个列宽2.......
  • Python与Excel:开启自动化办公新时代 
    引言 在当今数字化办公的大环境下,日常工作中处理Excel表格的任务愈发频繁且繁杂。传统的手动操作不仅耗时费力,还容易出错。而Python作为一门功能强大且应用广泛的编程语言,为我们实现Excel办公自动化提供了高效的解决方案。借助Python的丰富库和简洁语法,能够轻松完成诸如数......
  • 使用Python爬虫将抓取的数据保存到Excel文件
    在进行Python爬虫开发时,数据的存储是非常重要的一环。随着数据分析需求的不断增长,保存和管理大量的数据变得尤为重要。CSV(Comma-SeparatedValues)格式一直是一个常见的存储格式,但在许多应用场景下,Excel文件作为一种更直观、结构化的方式,具有更多的优势,尤其在数据分析与可视......
  • 如果通过 vxe-table 实现 Excel,可以和 Excel、WPS 复制粘贴
    如果通过vxe-table实现Excel,可以和Excel、WPS复制粘贴官网:https://vxetable.cn<template><div><vxe-gridref="gridRef"v-bind="gridOptions"@cell-area-selection-end="cellAreaSelectionEndEvent"......
  • Excel中ACCRINT函数的用法
    Excel中ACCRINT函数的用法1.函数详细讲解1.1函数解释1.2使用格式1.3参数定义1.4要点2.实用演示示例2.1函数需求2.2公式编写2.3计算过程3.注意事项4.文档下载5.其他文章6.获取全部Excel练习素材快来试试吧......
  • Java百万数据导出Excel性能优化[读(并发)写分离/流式查询]
    参考:https://www.zhihu.com/tardis/bd/art/533753443?source_id=1001 Java百万数据导出Excel性能优化[读(并发)写分离/流式查询]结果测试:104万数据,导出excel用时由59秒优化到19秒问题列表:1、导出过程中会较多占用CPU、内存、磁盘,需全局对Excel导出限流,防止同时对大量数......