forked from erp-dev/erp
5.0 KiB
5.0 KiB
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 个测试用例均通过,未发现任何问题。
运行测试命令
# 使用环境变量配置数据库连接
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
注意事项
- 数据库要求: 测试需要 PostgreSQL 数据库连接
- 测试数据库: Django 会自动创建
test_flower数据库 - 认证: 测试使用
APIClient.force_authenticate()进行身份验证 - 数据隔离: 每个测试用例在事务中运行,测试结束后自动回滚
报告生成时间: 2025-12-23
测试执行环境: Python 3.14, Django 5.2.8, DRF