1
0
forked from erp-dev/erp

fix: added pgBouncer for conn pool manage

This commit is contained in:
2025-12-24 21:26:31 +08:00
parent 3d3f00232d
commit c832e26907
13 changed files with 160926 additions and 31 deletions

150
api_man_test_report.md Normal file
View File

@@ -0,0 +1,150 @@
# api_man 模块 API 测试报告
**测试执行时间**: 2025-12-23
**测试框架**: Django TestCase + DRF APIClient
**数据库**: PostgreSQL (test_flower)
## 测试摘要
- **总测试数**: 21
- **通过**: 21 ✅
- **失败**: 0 ❌
- **执行时间**: ~2.7 秒
- **测试状态**: **全部通过**
---
## 测试详情
### 1. WarehouseAPITestCase (仓库 API 测试)
**测试类**: `api_man.tests.WarehouseAPITestCase`
| 测试方法 | 描述 | 状态 |
|---------|------|------|
| `test_create_warehouse_with_default_type` | 测试创建仓库时使用默认类型 | ✅ 通过 |
| `test_create_warehouse_with_whole_type` | 测试创建整仓 | ✅ 通过 |
| `test_create_warehouse_with_scattered_type` | 测试创建散仓 | ✅ 通过 |
| `test_list_warehouses_includes_type` | 测试列表接口返回类型字段 | ✅ 通过 |
| `test_update_warehouse_type` | 测试更新仓库类型 | ✅ 通过 |
| `test_retrieve_warehouse_includes_type` | 测试检索单个仓库时包含类型字段 | ✅ 通过 |
**测试覆盖**:
- ✅ 创建仓库(默认类型、整仓、散仓)
- ✅ 列表查询(包含类型字段)
- ✅ 更新仓库类型
- ✅ 单个仓库检索
---
### 2. EmployeeTypeAPITestCase (员工职位类型 API 测试)
**测试类**: `api_man.tests.EmployeeTypeAPITestCase`
| 测试方法 | 描述 | 状态 |
|---------|------|------|
| `test_create_employee_type` | 测试创建职位类型 | ✅ 通过 |
| `test_list_employee_types` | 测试列出所有职位类型 | ✅ 通过 |
| `test_update_employee_type` | 测试更新职位类型 | ✅ 通过 |
| `test_delete_employee_type` | 测试删除职位类型 | ✅ 通过 |
**测试覆盖**:
- ✅ CRUD 操作(创建、读取、更新、删除)
- ✅ 列表查询
---
### 3. EmployeeAPITestCase (员工 API 测试)
**测试类**: `api_man.tests.EmployeeAPITestCase`
| 测试方法 | 描述 | 状态 |
|---------|------|------|
| `test_create_employee_with_position` | 测试创建带职位的员工 | ✅ 通过 |
| `test_create_employee_without_position` | 测试创建不带职位的员工 | ✅ 通过 |
| `test_list_employees_includes_job_type` | 测试列表接口包含 job_type 字段 | ✅ 通过 |
| `test_update_employee_position` | 测试更新员工职位 | ✅ 通过 |
| `test_job_type_is_read_only` | 测试 job_type 是只读字段 | ✅ 通过 |
**测试覆盖**:
- ✅ 创建员工(带职位/不带职位)
- ✅ 列表查询(包含 job_type 兼容字段)
- ✅ 更新员工职位
- ✅ job_type 只读验证(兼容性字段)
---
### 4. UserProfileAPITestCase (用户资料 API 测试)
**测试类**: `api_man.tests.UserProfileAPITestCase`
| 测试方法 | 描述 | 状态 |
|---------|------|------|
| `test_create_user_profile` | 测试创建用户资料 | ✅ 通过 |
| `test_list_user_profiles` | 测试列出所有用户资料 | ✅ 通过 |
| `test_retrieve_user_profile` | 测试检索单个用户资料 | ✅ 通过 |
| `test_update_user_profile` | 测试更新用户资料 | ✅ 通过 |
| `test_delete_user_profile` | 测试删除用户资料 | ✅ 通过 |
| `test_user_profile_filter_by_merchant` | 测试用户资料按商户过滤 | ✅ 通过 |
**测试覆盖**:
- ✅ CRUD 操作(创建、读取、更新、删除)
- ✅ 列表查询
- ✅ 单个资料检索(包含嵌套用户对象)
- ✅ 按商户过滤(多租户隔离)
---
## 测试 API 端点
### 仓库 API
- `POST /api/backend/warehouses/` - 创建仓库
- `GET /api/backend/warehouses/` - 列表查询
- `GET /api/backend/warehouses/{id}/` - 单个查询
- `PATCH /api/backend/warehouses/{id}/` - 更新仓库
### 员工职位类型 API
- `POST /api/backend/employee-types/` - 创建职位类型
- `GET /api/backend/employee-types/` - 列表查询
- `PATCH /api/backend/employee-types/{id}/` - 更新职位类型
- `DELETE /api/backend/employee-types/{id}/` - 删除职位类型
### 员工 API
- `POST /api/backend/employees/` - 创建员工
- `GET /api/backend/employees/` - 列表查询
- `PATCH /api/backend/employees/{id}/` - 更新员工
### 用户资料 API
- `POST /api/backend/user-profiles/` - 创建用户资料
- `GET /api/backend/user-profiles/` - 列表查询
- `GET /api/backend/user-profiles/{id}/` - 单个查询
- `PATCH /api/backend/user-profiles/{id}/` - 更新用户资料
- `DELETE /api/backend/user-profiles/{id}/` - 删除用户资料
---
## 失败测试
**无失败测试**
所有 21 个测试用例均通过,未发现任何问题。
---
## 运行测试命令
```bash
# 使用环境变量配置数据库连接
DB_HOST=localhost DB_PORT=5432 DB_NAME=flower DB_USER=postgres DB_PASSWORD=postgres \
uv run python manage.py test api_man --verbosity=2 --keepdb
```
---
## 注意事项
1. **数据库要求**: 测试需要 PostgreSQL 数据库连接
2. **测试数据库**: Django 会自动创建 `test_flower` 数据库
3. **认证**: 测试使用 `APIClient.force_authenticate()` 进行身份验证
4. **数据隔离**: 每个测试用例在事务中运行,测试结束后自动回滚
---
**报告生成时间**: 2025-12-23
**测试执行环境**: Python 3.14, Django 5.2.8, DRF