需构建标准化测试任务集并设计量化比对机制:一、准备含5函数×3用例的人工标准集;二、用固定参数调用hermesagent生成测试;三、通过ast解析提取并匹配断言结构;四、在隔离环境运行对比执行状态;五、计算函数级、断言级、执行级三级准确率。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望评估HermesAgent自动生成Pytest测试用例的准确率,需构建标准化的测试任务集并设计可量化的比对机制。以下是开展该准确率测试的具体步骤:
一、准备标准测试用例集
为衡量生成结果的准确性,需预先人工编写一组高质量、覆盖典型场景的Pytest用例作为黄金标准。这些用例应与目标被测函数一一对应,并包含明确的断言逻辑和边界条件验证。
1、选取5个具有代表性的Python函数,涵盖参数校验、异常路径、正常返回三类行为。
2、为每个函数人工编写3个Pytest测试函数,分别覆盖正向调用、空输入、类型错误三种情况。
3、将所有人工编写的测试用例保存为ground_truth_tests.py文件,并标注每条断言的预期结果(True/False)。
二、调用HermesAgent批量生成测试用例
通过统一接口向HermesAgent提交被测函数源码,获取其输出的Pytest格式测试代码;该过程需固定提示词模板与温度参数,确保生成过程可控可复现。
1、将5个被测函数分别提取为独立的Python源码字符串,去除注释和空行。
2、构造系统提示词:“你是一个专业的Python测试工程师,请为以下函数生成符合Pytest规范的单元测试代码,要求覆盖正常流程、边界值和异常输入,使用assert语句,不引入外部依赖。”
3、对每个函数调用HermesAgent API,设置temperature=0.1,max_tokens=512,保存返回内容至generated_tests_001.py至generated_tests_005.py。
三、执行结构化语法解析与断言提取
准确率判定不能仅依赖字符串相似度,而需深入AST层级识别测试意图。需解析生成代码与标准代码中的函数定义、assert语句、参数传入方式等关键结构元素。
1、使用ast.parse()分别加载ground_truth_tests.py与各generated_tests_*.py文件,构建抽象语法树。
Hermes Agent (v0.8.0) 是由 Nous Research 开发的开源自进化 AI 智能体,被誉为“与你共同成长的 Agent”。其核心优势在于内置学习闭环,能从任务中自动提炼技能、持久记忆用户偏好,越用越懂你。该版本聚焦“智能”升级,支持后台任务自动通知、模型实时切换及 MCP OAuth 2.1。它兼容 200+ 主流大模型,支持微信、Telegram 等多平台接入,仅需 5 美元 VPS 即可部署,是提升个人与企业生产力的理想选择。
2、遍历AST节点,提取所有ast.Assert节点,并记录其测试目标函数名、被断言表达式左值、右值字面量或变量名。
3、对每组对应函数的测试用例,将人工断言集合与生成断言集合按“目标函数+断言模式”进行键匹配,匹配成功需满足:断言对象一致、比较操作符相同、右值语义等价(如None与'None'不等价)。
四、运行双环境执行验证
仅静态分析无法验证断言逻辑是否真正生效,必须在隔离环境中实际运行生成用例,观察其是否通过、失败或抛出意外异常,再与人工用例的运行结果比对。
1、在干净虚拟环境中安装pytest及被测模块依赖,禁用网络与磁盘IO。
2、对每组人工/生成测试文件,分别执行:pytest -v --tb=no --no-header,捕获stdout与退出码。
3、记录每条测试用例的实际状态:PASSED、FAILED(含断言错误信息)、ERROR(语法或导入失败)、SKIPPED;仅当生成用例状态与人工用例完全一致且失败原因描述语义相同,才计为一项准确匹配。
五、计算细粒度准确率指标
采用三级准确率分层统计,避免单一数值掩盖结构性缺陷:函数级准确率(5个函数中生成测试能完整覆盖人工设定场景的数量占比)、断言级准确率(所有人工断言中被生成断言正确复现的比例)、执行级准确率(生成用例在真实运行中表现出与人工用例一致行为的比例)。
1、统计5个函数各自的人工断言总数,记为T_total;统计其中被生成用例以相同目标、相同操作符、相同语义右值复现的数量,记为M_assert。
2、统计5个函数各自的人工测试用例总条数,记为C_total;统计其中生成用例在相同输入下产生相同执行状态(PASSED/FAILED/ERROR)的数量,记为M_exec。
3、断言级准确率 = M_assert / T_total × 100%;执行级准确率 = M_exec / C_total × 100%。










