OpenClaw 实战:利用 AI Agent 自动生成测试用例并导出 Excel
OpenClaw 是一个轻量级的 Agent 框架,核心逻辑非常纯粹:Skill 注册 → 工具选择 → 任务执行。它没有 Dify 那种复杂的可视化界面,也不依赖知识库或繁琐的工作流编排。代码简洁,上手极快,特别适合有编程能力的测试工程师或测试开发人员使用。
简单来说,OpenClaw 就是一个只专注做工具调用的极简引擎。
环境准备
首先安装核心框架及相关依赖。我们需要用到 openpyxl 处理 Excel,以及 openai 和 requests 来调用大模型。
pip install openclaw openpyxl openai requests
接下来配置 LLM 密钥。在代码中设置环境变量即可,记得替换为你自己的 API Key。
import os
os.environ["OPENAI_API_KEY"] = "你的 API Key"
完整实现:从生成到写入 Excel
下面这段代码展示了如何构建一个完整的自动化流程:先生成结构化测试用例,再将其写入 Excel 文件。
import json
import openpyxl
from openpyxl.styles import Font, Alignment, PatternFill
from openclaw import Agent, Tool, Parameter
from openclaw.llms import OpenAILLM
# ===================== Skill 1:生成测试用例 =====================
class TestCaseGenerateTool(Tool):
name = "test_case_generator"
description = """
软件测试专用工具:根据产品需求生成结构化测试用例,包含用例 ID、模块、用例标题、前置条件、操作步骤、预期结果、优先级
必须返回 JSON 数组格式的用例数据,每个用例是字典
"""
parameters = [
Parameter(name="requirement", type="str", description="产品需求描述", required=True),
Parameter(name="module", type="str", description="测试模块名称", required=True),
Parameter(name="priority", =, description=, required=)
]
() -> :
prompt =
llm = OpenAILLM(model=, temperature=)
response = llm.chat.completions.create(
messages=[{: , : prompt}],
model=
)
test_cases = json.loads(response.choices[].message.content.strip())
i, (test_cases, ):
[] =
json.dumps(test_cases, ensure_ascii=)
():
name =
description =
parameters = [
Parameter(name=, =, description=, required=),
Parameter(name=, =, description=, required=)
]
() -> :
:
cases = json.loads(test_cases)
wb = openpyxl.Workbook()
ws = wb.active
ws.title =
headers = [, , , , , , ]
col, header (headers, ):
cell = ws.cell(row=, column=col, value=header)
cell.font = Font(bold=, color=)
cell.fill = PatternFill(start_color=, end_color=, fill_type=)
cell.alignment = Alignment(horizontal=)
row, (cases, ):
col, header (headers, ):
cell_value = .get(header, )
ws.cell(row=row, column=col, value=cell_value)
ws.cell(row=row, column=col).alignment = Alignment(horizontal=)
col_widths = [, , , , , , ]
i, width (col_widths, ):
ws.column_dimensions[( + i)].width = width
wb.save(file_path)
Exception e:
():
llm = OpenAILLM(model=, temperature=)
tools = [TestCaseGenerateTool(), ExcelWriteTool()]
agent = Agent(
llm=llm,
tools=tools,
system_prompt=,
verbose=
)
agent
__name__ == :
agent = init_openclaw_agent()
user_task =
result = agent.run(user_task)
()
(result)


