在测试工程师的日常工作中,测试用例管理 是一个重要环节。很多团队仍然依赖于 Excel 表格 来管理测试用例,包含用例描述、步骤、预期结果等内容。然而,这种方式存在以下痛点:
- 难以复用:Excel 文件往往是静态的,无法直接与自动化脚本关联。
- 易出错:人工更新用例容易遗漏或引入错误,特别是大规模用例变更时。
- 协作不便:多人编辑同一个 Excel 文件时容易冲突,版本管理困难。
- 不适配自动化测试:Excel 数据无法直接被自动化测试框架使用,需手动转换为代码。
本篇文章将围绕这些痛点展开,提供切实可行的解决方案:将 Excel 测试用例转换为结构化数据(如 JSON 或 YAML),并与自动化测试框架无缝对接。
1. 功能目标
我们将实现以下功能:
- 解析 Excel 测试用例文件:读取测试用例数据,包括用例标题、步骤、预期结果等。
- 转换为结构化数据:将测试用例导出为 JSON 或 YAML 格式,便于自动化测试框架直接使用。
- 生成自动化脚本模板:基于解析的用例数据,自动生成 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 测试用例文件到结构化数据的自动化转换,并进一步生成了自动化测试脚本模板。
亮点
- 兼容性强:支持 Excel 文件的解析,便于与现有测试用例管理方式对接。
- 直接适配自动化测试框架:将用例数据转化为 JSON 或 YAML 格式,可直接用于 Playwright 或 Selenium 测试。
- 加速脚本开发:基于用例数据自动生成测试脚本模板,减少重复工作量。
下一篇预告:我们将在下一篇文章中探索 接口测试的自动化与 Mock 数据解决方案,帮助你在接口测试中摆脱环境依赖,快速实现高效的接口验证。敬请期待!
标签:Excel,write,用例,测试用例,测试,test,cases,第二篇 From: https://blog.csdn.net/weixin_44872675/article/details/145296516