OpenClaw 实战:5 分钟用 AI Agent 自动生成规范测试用例并写入 Excel

OpenClaw 实战:5 分钟用 AI Agent 自动生成规范测试用例并写入 Excel

OpenClaw 实战:5 分钟用 AI Agent 自动生成规范测试用例并写入 Excel

一、核心前提

OpenClaw 是轻量级 Agent 框架,核心聚焦:
Skill 注册 → 工具选择 → 任务执行

  • 没有 Dify 的可视化界面
  • 没有知识库、没有复杂工作流
  • 代码极简洁、上手极快
  • 适合:测试开发 / 有编程能力的测试工程师

一句话定位:
OpenClaw = 极简、轻量、只专注做工具调用的小 Agent 引擎

二、环境准备

1. 安装 OpenClaw 及依赖

# 安装 OpenClaw 核心框架 pip install openclaw # Excel 操作 + LLM 调用 pip install openpyxl openai requests 

2.配置 LLM 密钥

import os # 替换成你的 OpenAI API Key os.environ["OPENAI_API_KEY"]="你的API Key"

三、完整实现代码(测试用例生成 + 写入 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:生成测试用例 =====================classTestCaseGenerateTool(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",type="str", description="用例优先级(高/中/低)", required=True)]defrun(self, requirement:str, module:str, priority:str)->str: prompt =f""" 作为资深软件测试工程师,根据以下需求生成{priority}优先级的{module}测试用例: 需求描述:{requirement} 要求: 1. 用例字段:用例ID、模块、用例标题、前置条件、操作步骤、预期结果、优先级 2. 用例ID格式:模块缩写+序号(比如登录模块→DL001) 3. 覆盖所有功能点、边界条件、异常场景 4. 返回纯JSON数组,无多余文字 """ llm = OpenAILLM(model="gpt-3.5-turbo", temperature=0.3) response = llm.chat.completions.create( messages=[{"role":"user","content": prompt}], model="gpt-3.5-turbo") test_cases = json.loads(response.choices[0].message.content.strip())for i,caseinenumerate(test_cases,1):case["用例ID"]=f"{module[:2].upper()}00{i}"return json.dumps(test_cases, ensure_ascii=False)# ===================== Skill 2:写入Excel =====================classExcelWriteTool(Tool): name ="excel_writer" description =""" 软件测试专用工具:把JSON格式的测试用例列表写入Excel,生成规范的测试用例文档 支持字段:用例ID、模块、用例标题、前置条件、操作步骤、预期结果、优先级 """ parameters =[ Parameter( name="test_cases",type="str", description="JSON格式的测试用例列表", required=True), Parameter( name="file_path",type="str", description="Excel保存路径", required=True)]defrun(self, test_cases:str, file_path:str)->str:try: cases = json.loads(test_cases) wb = openpyxl.Workbook() ws = wb.active ws.title ="功能测试用例" headers =["用例ID","模块","用例标题","前置条件","操作步骤","预期结果","优先级"]for col, header inenumerate(headers,1): cell = ws.cell(row=1, column=col, value=header) cell.font = Font(bold=True, color="FFFFFF") cell.fill = PatternFill(start_color="4472C4", end_color="4472C4", fill_type="solid") cell.alignment = Alignment(horizontal="center")for row,caseinenumerate(cases,2):for col, header inenumerate(headers,1): cell_value =case.get(header,"无") ws.cell(row=row, column=col, value=cell_value) ws.cell(row=row, column=col).alignment = Alignment(horizontal="center") col_widths =[10,15,30,20,40,30,10]for i, width inenumerate(col_widths,1): ws.column_dimensions[chr(64+i)].width = width wb.save(file_path)returnf"成功!测试用例已写入 {file_path},共 {len(cases)} 条用例"except Exception as e:returnf"失败:{str(e)}"# ===================== 初始化 Agent =====================definit_openclaw_agent(): llm = OpenAILLM(model="gpt-3.5-turbo", temperature=0.3) tools =[TestCaseGenerateTool(), ExcelWriteTool()] agent = Agent( llm=llm, tools=tools, system_prompt=""" 你是软件测试专属Agent,负责: 1. 先调用 test_case_generator 生成测试用例 2. 再调用 excel_writer 把用例写入Excel 3. 最终返回Excel生成结果 """, verbose=True)return agent # ===================== 执行 =====================if __name__ =="__main__": agent = init_openclaw_agent() user_task =""" 请生成登录模块的高优先级测试用例,需求: 用户登录功能支持手机号+验证码登录,手机号非11位提示「请输入正确手机号」, 验证码错误3次后账号锁定10分钟,登录成功跳转到首页。 生成后把用例写入 ./登录模块测试用例.xlsx """ result = agent.run(user_task)print("\n===== 最终结果 =====")print(result)

四、核心代码解释

  1. Skill 定义核心:
Tool= 技能 / 函数 name:工具名 description:Agent 判断什么时候调用该工具 parameters:告诉 AI 需要什么参数 run():真正执行逻辑 

2. Agent 执行逻辑:

 思考:用户需要生成测试用例 → 调用 test_case_generator 参数提取成功 → 生成用例 再思考:需要写入 Excel → 调用 excel_writer 最终返回结果 

五、运行效果

控制台输出

===== 最终结果 ===== 成功!测试用例已写入 ./登录模块测试用例.xlsx,共 5 条用例 

Excel 文件内容

标准 7 列测试用例 美观规范,可直接提交评审 可直接导入测试平台 

六、OpenClaw 进阶扩展

1. 解析 PDF/Word 需求文档

classDocumentParseTool(Tool): name ="document_parser" description ="解析PDF/Word格式的产品需求文档,提取核心需求文本" parameters =[Parameter(name="file_path",type="str", description="文档路径", required=True)]defrun(self, file_path:str)->str:import PyPDF2 withopen(file_path,"rb")as f: reader = PyPDF2.PdfReader(f) content ="\n".join([page.extract_text()for page in reader.pages])return content 
classTestLinkUploadTool(Tool): name ="testlink_uploader" description ="把测试用例导入TestLink测试管理平台" parameters =[Parameter(name="test_cases",type="str", description="JSON用例列表", required=True)]defrun(self, test_cases:str)->str:# 调用 TestLink API 实现导入return"用例已成功导入TestLink"

七、总结

OpenClaw 核心流程:
定义 Tool(技能)
注册给 Agent
输入一句话任务
Agent 自动选择工具、自动执行、自动输出结果
优势:
轻量、无冗余
代码完全可控
适合嵌入自动化脚本、CI/CD
比可视化平台更灵活、更适合测试开发

Read more

WebUI界面响应慢?优化前端缓存策略,加载速度提升50%

WebUI界面响应慢?优化前端缓存策略,加载速度提升50% 📌 问题背景:语音合成服务的用户体验瓶颈 在部署基于 ModelScope Sambert-Hifigan 的中文多情感语音合成服务后,尽管模型推理质量高、环境稳定,但在实际使用中发现:当用户频繁输入相似或重复文本时,WebUI界面仍会重新发起请求、等待后端合成音频,导致响应延迟明显,尤其在长文本场景下体验较差。 虽然项目本身已对依赖项(如 datasets==2.13.0、numpy==1.23.5、scipy<1.13)进行了深度兼容性修复,并通过 Flask 提供了稳定的 API 与 WebUI 双模式服务,但前端缺乏有效的缓存机制,使得相同内容的语音请求被反复处理,浪费计算资源且拖慢整体响应速度。 本文将围绕该语音合成系统的 WebUI 层面,提出一套轻量级前端缓存优化方案,实现相同文本请求的毫秒级响应,实测页面加载与播放延迟降低 50%以上。

Java Web 拦截机制实战指南:Filter 与 Interceptor 深度解析

一、理解核心概念 在 Java Web 开发中,过滤器(Filter)和拦截器(Interceptor)是两种核心的请求处理机制。它们虽然都能对请求进行拦截和处理,但定位截然不同: * Filter 是 Servlet 容器的"守门人",位于应用最外层 * Interceptor 是 Spring MVC 的"执法官",位于框架内部 二、Filter:Servlet 容器的第一道防线 2.1 本质与特点 Filter 是 Java Servlet 规范 定义的组件,由 Servlet 容器(如 Tomcat)直接管理,不依赖任何框架,

openclaw喂饭教程!在 Linux 环境下快速完成安装、初始化与 Web UI 配置

openclaw喂饭教程!在 Linux 环境下快速完成安装、初始化与 Web UI 配置

前言 OpenClaw 是一款开源的 AI Agent 工具,但对第一次接触的用户来说,完整跑通流程并不直观。本文以 Linux 环境为例,详细记录了 OpenClaw 的安装、初始化流程、模型选择、TUI 使用方式,以及 TUI 与 Web UI 认证不一致导致的常见问题与解决方法,帮助你最快速度把 OpenClaw 真正跑起来 环境准备 1)安装nodejs curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt install -y nodejs > node

33岁失业女前端程序员,可以转行干什么啊?

33岁失业女前端程序员,可以转行干什么啊?

33岁失业,既没有20+的精力无限,也还没到40+的稳定沉淀,加上前端行业技术迭代快、年轻化竞争激烈的现状,焦虑感扑面而来太正常了。 但作为一名深耕行业多年的观察者,我想先给各位姐妹吃颗定心丸:33岁的前端经验不是“包袱”,而是“宝藏”。咱们多年积累的逻辑思维、用户感知、跨团队沟通能力,以及对技术实现边界的把控,都是转行的核心优势。与其纠结“年龄大了怎么办”,不如聚焦“我的优势能迁移到哪里”。结合行业趋势和女性从业者的特质,整理了6个高适配、易落地的转行方向,供大家参考。 一、技术相关赛道:发挥积累,平稳过渡 如果对技术还有热情,不想彻底脱离IT圈,这类方向能最大化利用前端基础,转型成本最低,也是最容易快速上手的选择。 1. 测试开发工程师:细节控的“降维打击” 前端开发天天和界面打交道,最清楚用户会怎么操作、哪里容易出bug,这种对用户行为的敏感度,是测试开发的核心竞争力。而且咱们懂代码、懂开发流程,从“找bug”升级为“