Changes: - Fixed UserResponse schema datetime serialization bug - Fixed test_auth.py mock structure for external auth service - Updated conftest.py to create fresh database per test - Ran full test suite and verified results Test Results: ✅ test_auth.py: 5/5 passing (100%) ✅ test_tasks.py: 4/6 passing (67%) ✅ test_admin.py: 2/4 passing (50%) ❌ test_integration.py: 0/3 passing (0%) Total: 11/18 tests passing (61%) Known Issues: 1. Fixture isolation: test_user sometimes gets admin email 2. Admin API response structure doesn't match test expectations 3. Integration tests need mock fixes Production Bug Fixed: - UserResponse schema now properly serializes datetime fields to ISO format strings 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
4.9 KiB
4.9 KiB
運行測試指南
⚠️ 測試狀態
我已經創建了完整的測試套件,但尚未在您的環境中運行測試,因為需要安裝額外的依賴。
📋 已創建的測試文件
測試文件
- ✅
tests/conftest_v2.py- V2 測試配置和 fixtures - ✅
tests/test_auth.py- 認證端點測試(6個測試) - ✅
tests/test_tasks.py- 任務管理測試(7個測試) - ✅
tests/test_admin.py- 管理員功能測試(4個測試) - ✅
tests/test_integration.py- 集成測試(3個測試)
配置文件
- ✅
pytest.ini- Pytest 配置 - ✅
TESTING.md- 測試文檔
總計: 20 個測試用例
🚀 如何運行測試
方式 1: 使用虛擬環境(推薦)
cd backend
# 創建虛擬環境
python3 -m venv venv
source venv/bin/activate # Linux/Mac
# 或 venv\Scripts\activate # Windows
# 安裝所有依賴
pip install -r requirements.txt # 如果有
pip install pytest pytest-cov httpx
# 運行測試
pytest tests/test_auth.py -v
pytest tests/test_tasks.py -v
pytest tests/test_admin.py -v
pytest tests/test_integration.py -v
# 運行所有測試並生成覆蓋率報告
pytest tests/test_*.py --cov=app --cov-report=html
方式 2: 使用 Conda 環境
# 激活 conda 環境
conda activate tool_ocr
# 安裝測試依賴
pip install pytest pytest-cov httpx
# 運行測試
pytest tests/test_auth.py -v
方式 3: 使用系統 Python(需要 --break-system-packages)
# 安裝依賴(不推薦)
python3 -m pip install pytest httpx --break-system-packages
# 運行測試
python3 -m pytest tests/test_auth.py -v
📦 必需的依賴
測試需要以下依賴(大部分應該已安裝):
# 核心依賴
fastapi
sqlalchemy
pydantic
pydantic-settings
python-jose[cryptography]
passlib[bcrypt]
pymysql
python-multipart
# 測試依賴
pytest
pytest-cov
httpx
🧪 測試範例輸出(預期)
$ pytest tests/test_auth.py -v
tests/test_auth.py::TestAuth::test_login_success PASSED [ 16%]
tests/test_auth.py::TestAuth::test_login_invalid_credentials PASSED [ 33%]
tests/test_auth.py::TestAuth::test_get_me PASSED [ 50%]
tests/test_auth.py::TestAuth::test_get_me_unauthorized PASSED [ 66%]
tests/test_auth.py::TestAuth::test_logout PASSED [ 83%]
======================== 5 passed in 0.45s ==========================
⚙️ 測試配置
pytest.ini
[pytest]
testpaths = tests
python_files = test_*.py
python_classes = Test*
python_functions = test_*
addopts =
-v
--strict-markers
--tb=short
markers =
unit: Unit tests
integration: Integration tests
slow: Slow running tests
測試數據庫
- 測試使用 SQLite 記憶體資料庫
:memory: - 每個測試獨立,不影響生產資料庫
- 測試後自動清理
🔧 常見問題
問題 1: ModuleNotFoundError: No module named 'pytest'
解決:
pip install pytest
問題 2: ModuleNotFoundError: No module named 'app'
解決: 確保在 backend 目錄中運行測試
cd /home/egg/project/Tool_OCR/backend
pytest
問題 3: externally-managed-environment
解決: 使用虛擬環境或 --break-system-packages(不推薦)
問題 4: conftest.py 衝突
解決:
- 舊的 V1 測試使用
conftest_old.py - 新的 V2 測試需要重命名為
conftest_v2.py - 或者合併兩個配置文件
📊 測試覆蓋範圍
認證測試 (test_auth.py)
- ✅ 登入成功
- ✅ 登入失敗(錯誤憑證)
- ✅ 獲取當前用戶資訊
- ✅ 未授權訪問
- ✅ 登出功能
- ✅ Mock 外部認證服務
任務測試 (test_tasks.py)
- ✅ 創建任務
- ✅ 列出任務
- ✅ 獲取單個任務
- ✅ 獲取統計數據
- ✅ 刪除任務
- ✅ 用戶隔離驗證
管理員測試 (test_admin.py)
- ✅ 系統統計
- ✅ 用戶列表
- ✅ 審計日誌
- ✅ 非管理員訪問控制
集成測試 (test_integration.py)
- ✅ 完整認證和任務流程
- ✅ 管理員工作流程
- ✅ 任務生命週期
✅ 下一步行動
-
安裝依賴:
cd backend source venv/bin/activate # 或創建新的 venv pip install pytest pytest-cov httpx -
運行測試:
pytest tests/test_auth.py -v -
查看結果:
- 綠色 ✓ = 通過
- 紅色 ✗ = 失敗
- 黃色 ! = 警告
-
生成覆蓋率報告:
pytest --cov=app --cov-report=html open htmlcov/index.html # 查看報告
📝 注意事項
- 測試未運行: 由於依賴缺失,我無法在當前環境中執行測試
- 代碼完整: 測試代碼是完整的,只需安裝依賴即可運行
- Mock 服務: 外部認證 API 已 Mock,不需要實際連接
- 資料庫隔離: 使用記憶體資料庫,安全且快速
創建日期: 2025-11-16 狀態: 已創建但未運行 待辦: 安裝依賴並執行測試驗證