# 测试文件说明

## 概述
本目录包含 CodePulse AI 项目的单元测试和集成测试。

## 测试分类

### 核心服务测试
- `test_ai_analyzer.py` - AI分析器功能测试
- `test_ai_client.py` - AI客户端功能测试
- `test_analysis_service.py` - 分析服务功能测试
- `test_cost_estimation.py` - 成本估算功能测试

### 文件过滤和分类测试
- `test_cost_estimation_blacklist.py` - 黑名单过滤功能测试
- `test_cost_estimation_with_real_repo.py` - 真实仓库成本估算测试
- `test_local_token_estimate.py` - 本地token估算测试

### Git相关测试
- `test_git_utils.py` - Git工具功能测试
- `test_github_service.py` - GitHub服务测试
- `test_git_clone.py` - Git克隆功能测试

### 任务管理测试
- `test_celery_tasks.py` - Celery任务测试
- `test_cancel_functionality.py` - 任务取消功能测试
- `test_polling_status.py` - 状态轮询测试

### 配置和安全测试
- `test_config.py` - 配置管理测试
- `test_security_utils.py` - 安全工具测试

## 运行测试

### 运行所有测试
```bash
cd codepulse_ai
python -m pytest tests/
```

### 运行特定测试文件
```bash
python -m pytest tests/test_cost_estimation.py
```

### 运行特定测试类或方法
```bash
python -m pytest tests/test_cost_estimation.py::TestClass::test_method
```

## 测试覆盖率
要查看测试覆盖率：
```bash
pip install coverage
coverage run -m pytest tests/
coverage report
coverage html  # 生成HTML报告
```

## 添加新测试

当添加新功能时，请遵循以下约定：

1. 测试文件命名：`test_[功能名称].py`
2. 测试类命名：`Test[功能名称]`
3. 测试方法命名：`test_[具体功能描述]`
4. 包含适当的断言和错误消息
5. 为外部依赖使用模拟对象（mock）

## 注意事项

- 所有测试都应该独立运行，不应依赖其他测试的结果
- 测试数据应使用临时目录，避免污染项目文件
- 对于需要外部API的测试，应使用模拟对象
- 测试应该具有描述性的名称和清晰的断言消息