Files
notytex/tests
2025-08-04 08:43:42 +02:00
..
2025-08-04 08:43:42 +02:00
2025-08-04 08:43:42 +02:00
2025-08-04 08:43:42 +02:00
2025-08-04 08:43:42 +02:00
2025-08-04 08:43:42 +02:00
2025-08-04 08:43:42 +02:00
2025-08-04 08:43:42 +02:00
2025-08-04 08:43:42 +02:00
2025-08-04 08:43:42 +02:00

Tests Unitaires

Ce dossier contient les tests unitaires pour l'application de gestion scolaire.

Structure des tests

tests/
├── __init__.py
├── conftest.py              # Configuration globale des tests
├── test_app.py             # Tests de l'application Flask
├── test_models.py          # Tests des modèles SQLAlchemy
├── test_forms.py           # Tests des formulaires WTForms
├── test_services.py        # Tests des services métier
├── test_routes_assessments.py  # Tests des routes d'évaluations
└── test_utils.py           # Tests des utilitaires

Exécution des tests

Avec uv (recommandé)

# Installer les dépendances de test
uv sync

# Exécuter tous les tests
uv run pytest tests/ -v

# Exécuter avec couverture de code
uv run pytest tests/ --cov=. --cov-report=html

# Exécuter des tests spécifiques
uv run pytest tests/test_models.py -v
uv run pytest tests/test_models.py::TestClassGroup -v

Avec le script personnalisé

# Tous les tests
uv run python run_tests.py

# Avec rapport de couverture
uv run python run_tests.py --coverage

# Tests d'un fichier spécifique
uv run python run_tests.py test_models.py

# Mode silencieux
uv run python run_tests.py --quiet

Configuration

Les tests utilisent:

  • pytest comme framework de test
  • pytest-flask pour l'intégration Flask
  • pytest-cov pour la couverture de code
  • SQLite en mémoire pour les tests de base de données

Couverture des tests

Les tests couvrent:

  • Modèles SQLAlchemy (création, validation, relations)
  • Configuration de l'application Flask
  • Services métier (AssessmentService)
  • Utilitaires (validation, gestion d'erreurs)
  • Formulaires WTForms (validation)
  • Routes principales (responses HTTP)

Bonnes pratiques

  1. Isolation: Chaque test utilise une base de données temporaire
  2. Fixtures: Configuration partagée dans conftest.py
  3. Nommage: Tests préfixés par test_
  4. Organisation: Tests groupés par classe selon la fonctionnalité
  5. Assertions: Vérifications claires et spécifiques

Ajout de nouveaux tests

Pour ajouter de nouveaux tests:

  1. Créer un fichier test_<module>.py
  2. Importer les fixtures nécessaires
  3. OU utiliser les fixtures existantes (app, client)
  4. Suivre la convention de nommage

Exemple:

def test_my_function(app):
    with app.app_context():
        # Votre test ici
        assert True