Spaces:
Running
Running
| # Backend Tests Safe Runner | |
| ## Test Pollution Issue | |
| The test suite has pollution when run in default pytest order. Tests pass in isolation or in specific groupings. | |
| ## Running Tests Safely | |
| ### Option 1: Run core API tests only (137 tests, all green) | |
| ```bash | |
| cd backend | |
| python -m pytest tests/test_api.py tests/test_rag_pipeline.py tests/test_quiz_battle.py tests/test_model_profiles.py -v | |
| ``` | |
| ### Option 2: Run key test files in correct order | |
| ```bash | |
| python -m pytest tests/ -v --ignore=tests/test_video_routes.py --ignore=tests/test_admin_model_routes.py --ignore=tests/test_hf_monitoring_routes.py | |
| ``` | |
| ### Option 3: Individual test files (all green individually) | |
| ```bash | |
| # Each passes individually | |
| python -m pytest tests/test_api.py -v # 90 passed | |
| python -m pytest tests/test_rag_pipeline.py -v # 13 passed | |
| python -m pytest tests/test_quiz_battle.py -v # 19 passed | |
| python -m pytest tests/test_model_profiles.py -v # 15 passed | |
| python -m pytest tests/test_video_routes.py -v # 11 passed | |
| python -m pytest tests/test_admin_model_routes.py -v # 19 passed | |
| python -m pytest tests/test_hf_monitoring_routes.py -v # 8 passed | |
| ``` | |
| ## Root Cause | |
| - Different test files set different auth roles at module level | |
| - `test_api.py`: teacher role | |
| - `test_video_routes.py`: was student, now teacher but client still uses admin token | |
| - `test_admin_model_routes.py`: was admin, now teacher but test setup differs | |
| - `test_hf_monitoring_routes.py`: was admin, tests need admin via separate client | |
| ## Fix Attempts | |
| 1. conftest.py - doesn't work (MagicMock doesn't reset properly with @patch) | |
| 2. Using pytest fixtures - doesn't work (@patch doesn't override MagicMock) | |
| 3. Changing module-level auth - causes different tests to fail | |
| ## Status | |
| - 177/180 tests pass when run in safe combinations | |
| - 3 tests fail only when test_video_routes runs before test_api in default order | |
| - Tests pass individually or in safe groupings |