Metadata-Version: 2.4
Name: autotest-agent
Version: 0.2.0
Summary: AI-powered Python unit test generation agent with ReAct architecture
Author: autotest contributors
License: MIT
Project-URL: Homepage, https://github.com/zhengzhi132/autotest-agent
Project-URL: Repository, https://github.com/zhengzhi132/autotest-agent
Project-URL: Issues, https://github.com/zhengzhi132/autotest-agent/issues
Keywords: testing,pytest,unit-test,ai,llm,code-generation,agent
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Topic :: Software Development :: Code Generators
Classifier: Framework :: Pytest
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: typer>=0.12
Requires-Dist: rich>=13.0
Requires-Dist: openai>=1.0
Requires-Dist: httpx>=0.24
Requires-Dist: langchain-core>=0.1
Requires-Dist: langchain-openai>=0.1
Requires-Dist: langgraph>=0.2
Requires-Dist: networkx>=3.2
Requires-Dist: pydantic>=2.0
Requires-Dist: pyyaml>=6.0
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.24; extra == "dev"
Requires-Dist: pytest-cov>=5.0; extra == "dev"
Requires-Dist: pytest-mock>=3.14; extra == "dev"
Requires-Dist: coverage>=7.0; extra == "dev"
Requires-Dist: black>=24.0; extra == "dev"
Requires-Dist: isort>=5.13; extra == "dev"

# 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 维评估，支持通过率/覆盖率/突变/幻觉/黑盒/模块/重复/断言/盲区。

## 用法

```bash
# 安装
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
