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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

autotest_agent-0.2.0.tar.gz (36.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

autotest_agent-0.2.0-py3-none-any.whl (42.0 kB view details)

Uploaded Python 3

File details

Details for the file autotest_agent-0.2.0.tar.gz.

File metadata

  • Download URL: autotest_agent-0.2.0.tar.gz
  • Upload date:
  • Size: 36.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.9

File hashes

Hashes for autotest_agent-0.2.0.tar.gz
Algorithm Hash digest
SHA256 8c8cbee19cfbf0cd119bfd4ea1ec9ae73e1b77fa2f4409e79d4bd2f0fc8db6c0
MD5 c8d3db0b9735ddda818666c03ca21f7f
BLAKE2b-256 f1bf0b1824b417dd87d4cca9e3e400d7e6dfceae5f29fc2277260486fbab0de9

See more details on using hashes here.

File details

Details for the file autotest_agent-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: autotest_agent-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 42.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.9

File hashes

Hashes for autotest_agent-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 26f8be44472abdfafc8f0392a96d45fd1753dd24203d8495a73c900f90dbdd29
MD5 9cc77912b5d6cf1da1c1410e3a30a537
BLAKE2b-256 e96e9f5b070f4fddedf459759fd443e7c8c74bc20943fb94b11f9e67e60add1f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page