返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

技能杀!ClaudeCode Skills 通用agent生成接口测试用例实录

[复制链接]
链载Ai 显示全部楼层 发表于 2 小时前 |阅读模式 打印 上一主题 下一主题

给各位大佬道歉!鸽了太久,年底赶项目节点,打工人都懂......


提前给大家拜个早早早年啦!!!


最近最火的莫过于Claude Code Skills,那么在2025年的最后一天,废话少说,直接来点干货吧,给大家带来最近正在琢磨的,通过Claude Code Skills自动生成接口测试用例的案例。








Claude Code Skills早在10月份就已经上线了,这个功能很多人应该很早就有了解,但是很多人一开始搞不清楚Skills、MCP、SubAgent之间到底有啥区别。


如果有不太了解Claude Code和Skills的小伙伴,我这里就不赘述了,具体教程可以查看官方:


https://code.claude.com/docs/zh-CN/skills


其实本质上都类似,都是为了拓展通过Agent能力而生的,但是使用场景和侧重点有所不同。


MCP的设计初衷是为了拓展模型或通用Agent与其他系统的数据交换的能力,这个关键在于模型和外部世界拿数据,主体分析还是在主模型中,但是现在有很多mcp server已经成了披着“协议”外衣的Agent杂烩.


Subagent(子代理)则是为了避免主AI进程中的上下文过长,把专门进行某个领域工作的思考和分析单拎出来,不占用主进程的上下文,主进程则来管理各个子代理的数据交换。


Skills(技能)则主要是为了管理prompt,核心思想是"prompt渐进式披露",减少上下文token和污染,比如,你扔给模型一个任务,模型自己判断什么时候用哪个Skill(这个Skill中放着prompt、数据、脚本等资源),这个prompt是分级加载的,而不是一股脑全给模型,否则会导致上下文污染,prompt也可以被更加灵活的运用(这里面就是Claude Code做的巧妙机制)。



现在我们就拿接口测试用例生成这个案例来展示。


项目接口比较复杂有可能为自己封装的C++、Http、gRPC等协议接口,所以这个生成工作流需要支持的生成模板比较多,同事也要考虑混合多接口的业务流程。


在demo中,我才用了ClaudeCodeSDK+Qwen3 Coder+Skills的方式(如果你们没有本地模型,也可以用modelspace中的模型,只是有次数限制,不过要主要,ClaudeCode需要接入有工具调用能力的模型,而且在国内需要用Proxy),原始输入有接口文档、DLL/头文件、接口生成规范、数据 四个类型的资源。


整体demo结构为:

claude_code_generate_test_gtest/├── API_REFERENCE_CPP.md├── main.py├── p/             #被测项目组件头文件和动态链接库│   ├── bin/│   ├── include/│   └── lib/├── tests/         #测试脚本目录│   ├── CMakeLists.txt   #编译脚本cmakelist文件(也是Claude Code生成)│   ├── main.cpp    │   ├── NodeTest.cpp   #接口用例│   └── build/   #编译产物└── .claude/     #项目级别skill配置(只有在当前路径下启动claude code可以被发现)     └── skills         └── generate_api_cpp_test_scripts             ├── SKILL.md             └── REFERENCE.md


除了这种C++项目,其他协议类型的接口也可以是一样,区别就是在项目路径下定义不同的skill,在一个skill中SKILL.md是这个技能的主要prompt,包含name、description、prompt细节、REFERENCE.md则是可能以来的其他资源,在这里就是生成C++ gtest测试脚本的详细规范说明(格式、语法、变量命名、颗粒度等等)。


当然其他协议http等也是一样的道理,大家有兴趣可以尝试以下效果。


SKILL.md

---name: generate-api-test-scriptsdescription: 根据用户提供的C++接口文档,生成C++ gtest接口测试用例。在需要生成C++项目的接口测试用例时使用---# Generate API Test Scripts
## Instructions
查看用户提供的接口文档(api_path)和源码头文件和DLL路径(src_path),查看并仔细阅读接口文档,重点查阅以下章节内容:
* [项目信息]* [详细接口说明]* [类型定义与枚举]
生成C++ gtest,接口测试用例脚本
## Rules
1. 在用户提供的输出路径(ouput_path)下,构建脚本和CmakeList,保证所有脚本均可以正常编译2. 请详细根据[详细接口说明]和[错误处理],依据正常工作流、错误工作流、异常工作流、边界值、多接口等方式进行接口用例脚本生成3. 必须保证所有已发布接口都生成了测试脚本,不得有任何遗漏4. 请仔细检查生成的测试脚本,严格遵循C++和gtest语法,不可以存在语法错误,查看脚本编写规范,查看 [REFERENCE.md](.\REFERENCE.md)5. 脚本编写规范,需要严格遵循并查看:[REFERENCE.md](.\REFERENCE.md).


main.py

import asynciofrom claude_agent_sdk import query, ClaudeSDKClient, ClaudeAgentOptions, AssistantMessage, TextBlock, ResultMessage
async def main_ClaudeSDKClient_query(user_prompt: str):    async with ClaudeSDKClient(options=options) as client:        await client.query(user_prompt)        async for message in client.receive_response():            ifisinstance(message, AssistantMessage):                for block in message.content:                    ifisinstance(block, TextBlock):                        print(f"Claude: {block.text}")if __name__ == "__main__":     user_prompt = f"""    项目源码头文件和Dll目录src_path:{code_path},接口文档目录api_path:{api_md_path},输出路径:{ouput_path}, 请根据接口文档内容扩展NodeTest对应的接口测试用例脚本    请保留当前tests下的CMakeLists内容,确保生成的测试脚本 cpp文件不得有任何语法错误遵循c++和gtest语法规范,如果要调用skill则需要告知    """    asyncio.run(main_ClaudeSDKClient_query(user_prompt))



最终的执行结果


当然gtest输出的报告,还可以接入allure,进行测试报告展示。


通过Skills实现不同协议接口用例自动生成,无需多agent,只需要定义对应的Skill生成prompt,CC会自动选择调用,且不占用全量上下文,节省token,避免信息污染。


写在最后


这个项目只是初期调研demo,后续将在这个思路上做更多的拓展,比如,除了定义不同协议的Skill之外,还可以定义MCP和子代理,来获取测试数据或造数Agent,以及接口文档解析Agent,实现全链路接口自动化测试。


别的不说了 ,只希望我们2026年身体越来越好、钱越来越多、越来越快乐,一切都越来越好!!!


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作