# Tests pour Ohm Stream Downloader Ce dossier contient la suite de tests unitaires pour le projet Ohm Stream Downloader. ## Structure ``` tests/ ├── __init__.py # Package initialization ├── conftest.py # Pytest configuration et fixtures ├── test_models.py # Tests pour les modèles Pydantic ├── test_downloaders.py # Tests pour les downloaders ├── test_download_manager.py # Tests pour DownloadManager ├── test_favorites.py # Tests pour le système de favoris └── test_api.py # Tests pour les endpoints FastAPI ``` ## Lancer les tests ### Tous les tests ```bash pytest ``` ### Avec couverture de code ```bash pytest --cov=app --cov-report=html ``` ### Uniquement les tests unitaires (rapides) ```bash pytest -m "unit" ``` ### Uniquement les tests d'intégration ```bash pytest -m "integration" ``` ### Exclure les tests lents ```bash pytest -m "not slow" ``` ### Mode verbeux ```bash pytest -v ``` ### Afficher le print debugging ```bash pytest -s ``` ## Fixtures disponibles Les fixtures sont définies dans `conftest.py` : - `temp_dir` : Répertoire temporaire pour les tests - `temp_download_dir` : Répertoire de téléchargement temporaire - `sample_download_task` : Exemple de tâche de téléchargement - `sample_download_request` : Exemple de requête de téléchargement - `download_manager` : Instance de DownloadManager configurée - `favorites_manager` : Instance de FavoritesManager configurée - `mock_httpx_client` : Mock pour httpx.AsyncClient - `sample_anime_metadata` : Exemple de métadonnées anime - `sample_favorite_data` : Exemple de favori ## Marqueurs (Markers) Les tests sont marqués automatiquement : - `unit` : Tests unitaires (isolés, rapides) - `integration` : Tests d'intégration (API endpoints) - `asyncio` : Tests asynchrones - `slow` : Tests lents (à marquer manuellement) - `network` : Tests nécessitant un accès réseau ## Couverture de code Le rapport de couverture est généré dans `htmlcov/index.html` après avoir lancé : ```bash pytest --cov=app --cov-report=html ``` ## Notes - Les tests utilisent des mocks pour éviter les appels réseau réels - Les fichiers temporaires sont nettoyés automatiquement après chaque test - La base de données de favoris utilise des fichiers temporaires - Les tests asynchrones utilisent `pytest-asyncio`