Skip to main content

autotest-agent

AI 驱动的 Python 单元测试生成工具。输入源码,自动生成 pytest 测试,沙箱验证,失败自修复。

当前架构(2026-08)

CLI → Orchestrator.run(source)
  ├─ 文件级 (默认): 每个 .py 文件 → 一个 agent
  └─ 组级 (AUTOTEST_GROUP=on): 项目函数 → 依赖图 → 社区检测分组 → 每组一个 agent

Agent 循环 (AUTOTEST_PIPELINE=fixed 时启用, 无 LLM 决策):
  generate_test → run_test → fix_test(收敛刹车) → get_coverage → done
默认 ReAct (LangChain React agent): LLM 自主迭代, recursion_limit 上限

依赖分组 (A2):
  DependencyGraph.build() 建跨文件边 → GroupBuilder 社区检测分组
  → DepGroup 拓扑排序合并源码 (被依赖方在前) → LLM 看完整因果链

组间并行 (B2):
  asyncio.gather 并发跑每组
  tools.py 模块全局 → ContextVar, 每组独立状态, 无串扰

核心能力

能力 实现
AST 解析 函数签名、类方法、继承链、构造函数
依赖分组 group_by_dependency() 社区检测 + 拓扑合并
组间并行 asyncio.gather + ContextVar 隔离
收敛刹车 (fixed 管道) check_convergence(3) 同类错误 3 次即停
沙箱验证 包树镜像 + 最小化环境 + SecurityScanner(别名/间接调用拦截)+ 网络屏蔽
语义拆分 status: verified / generated / failed
反幻觉 (fixed 管道) API 参考表 + BANNED 扫描 + 生成后验证

质量评估(cerberus 46 组,历史数据)

# 维度 值 说明
1 通过率 85.2% 2431/2854 测试通过
2 覆盖率 93.9% 行覆盖高
3 突变杀死率 33.7% 短板:行为覆盖不足
4 API 幻觉 1 处 极低
5 黑盒率 92.9% 走公共 API
6 模块命中 100% 每组测对目标
7 重复率 8.8% 低
8 断言有效性 83.5% 真值断言为主
9 覆盖盲区 1 BareValidator misuse

关键洞察:覆盖率 93.9%(行覆盖)与突变杀死率 33.7%(行为覆盖)的巨大差距,说明测试走到大多数代码行,但只验证了 1/3 的操作符行为。这是"断言深度不足"的量化证据——prompt 应更强调对每个操作符分支写具体断言,而非仅让测试跑通。

评估工具:evaluate_generated.py 9 维评估,支持通过率/覆盖率/突变/幻觉/黑盒/模块/重复/断言/盲区。

用法

# 安装
pip install -e .

# 配置 API key (推荐环境变量; 或写 autotest.yaml 的 llm.api_key)
export DEEPSEEK_API_KEY=sk-xxx

# 文件级生成
autotest generate ./src/ --coverage 80

# 组级生成 (依赖分组 + 并行)
AUTOTEST_GROUP=on autotest generate ./src/ --coverage 80

# 预览
autotest generate ./src/ --dry-run

对比

  • 固定管道 vs ReAct: 固定管道快 8x (5轮封顶), ReAct 覆盖率略高 (LLM 自主迭代)。默认走 ReAct;固定管道用 AUTOTEST_PIPELINE=fixed
  • 组级 vs 文件级: 组级根治跨文件盲区 (LLM 看完整依赖链), 文件级简单。组级用 AUTOTEST_GROUP=on

项目结构

src/autotest/
├── cli/               # CLI 入口 (generate / config)
├── analyzer/          # AST 解析、依赖图、分组、introspector
├── agent/             # ReAct agent、固定管道引擎、工具、ContextVar 状态、沙箱
├── llm/               # LangChain/DeepSeek Provider、PromptTemplate、middleware
├── config.py          # 配置模型 (llm/agent/execution/output)
└── orchestrator.py    # 文件级 + 组级调度
test_projects_real/    # cerberus 真实项目 (验证用)
generated_tests/       # 生成测试输出
run_cerberus.py        # cerberus 全量生成脚本
evaluate_generated.py  # 9 维质量评估
_deprecated/           # 历史死代码归档 (含 checkpoint/rate_limiter/edge_detector/mock_constructor 等)

注:早期设计模块(edge_detector、mock_constructor、metrics、output、verify、sdk、trace、plugins、rate_limiter)已归档到 _deprecated/,未参与主流程。

License

MIT

Metadata

Release files for autotest-agent 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for autotest-agent 0.2.0
File Size Uploaded
autotest_agent-0.2.0.tar.gz 36.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for autotest-agent 0.2.0
File Interpreter ABI Platform
autotest_agent-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 78.8 kB

Release files / autotest_agent-0.2.0.tar.gz

Download URL autotest_agent-0.2.0.tar.gz
Size 36.8 kB
Tags Source
SHA-256 checksum
How to use checksums
8c8cbee19cfbf0cd119bfd4ea1ec9ae73e1b77fa2f4409e79d4bd2f0fc8db6c0
BLAKE2b-256 checksum
How to use checksums
f1bf0b1824b417dd87d4cca9e3e400d7e6dfceae5f29fc2277260486fbab0de9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.9

Release files / autotest_agent-0.2.0-py3-none-any.whl

Download URL autotest_agent-0.2.0-py3-none-any.whl
Size 42.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
26f8be44472abdfafc8f0392a96d45fd1753dd24203d8495a73c900f90dbdd29
BLAKE2b-256 checksum
How to use checksums
e96e9f5b070f4fddedf459759fd443e7c8c74bc20943fb94b11f9e67e60add1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.9

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page