Assurance qualité des modèles
FastAPI-fastkit fournit une validation automatisée et complète des modèles pour s'assurer qu'ils maintiennent une qualité élevée et restent fonctionnels dans différents environnements et avec différents gestionnaires de paquets.
Assurance qualité multi-couches
FastAPI-fastkit s'appuie sur deux systèmes d'assurance qualité complémentaires :
1. Inspection statique des modèles
Validation automatisée hebdomadaire de la structure et de la syntaxe des modèles
2. Tests dynamiques des modèles
Tests complets de bout en bout avec création de projets réels
Inspection hebdomadaire automatisée
Chaque mercredi à minuit (UTC), notre workflow GitHub Actions inspecte automatiquement tous les modèles FastAPI pour s'assurer qu'ils respectent les standards de qualité :
- ✅ Validation de la structure des fichiers — vérifie que tous les fichiers et répertoires requis sont présents
- ✅ Vérification des extensions de fichiers — valide que les fichiers de modèle utilisent les bonnes extensions
.py-tpl - ✅ Vérification des dépendances — confirme que FastAPI et les dépendances requises sont correctement définies
- ✅ Implémentation FastAPI — vérifie que les modèles contiennent une initialisation correcte de l'application FastAPI
- ✅ Exécution des tests — exécute les tests du modèle pour s'assurer du bon fonctionnement
Système de tests automatisés des modèles
FastAPI-fastkit inclut un système de tests automatisés révolutionnaire qui fournit une validation complète de chaque modèle :
Découverte dynamique des modèles
Le système de tests découvre automatiquement tous les modèles sans configuration manuelle :
# Test all templates automatically
$ pytest tests/test_templates/test_all_templates.py -v
# Results show all discovered templates
PASSED tests/test_templates/test_all_templates.py::TestAllTemplates::test_template_creation[fastapi-default]
PASSED tests/test_templates/test_all_templates.py::TestAllTemplates::test_template_creation[fastapi-async-crud]
PASSED tests/test_templates/test_all_templates.py::TestAllTemplates::test_template_creation[fastapi-dockerized]
PASSED tests/test_templates/test_all_templates.py::TestAllTemplates::test_template_creation[fastapi-psql-orm]
Couverture de tests complète
Chaque modèle subit des tests complets de bout en bout :
✅ Processus de création de projet
- Copie du modèle et transformation des fichiers
- Injection des métadonnées du projet (nom, auteur, description)
- Validation de la structure des fichiers
✅ Compatibilité avec les gestionnaires de paquets
- UV (par défaut) : gestionnaire de paquets rapide basé sur Rust
- PDM : gestion moderne des dépendances Python
- Poetry : gestion des dépendances établie
- PIP : gestionnaire de paquets Python traditionnel
✅ Gestion de l'environnement virtuel
- Création de l'environnement pour chaque gestionnaire de paquets
- Vérification de l'installation des dépendances
- Flux de travail propres à chaque gestionnaire de paquets
✅ Résolution des dépendances
- Génération de
pyproject.toml(UV, PDM, Poetry) - Génération de
requirements.txt(PIP) - Conformité aux métadonnées (PEP 621)
- Configuration du système de build
✅ Validation de la structure du projet
- Identification du projet FastAPI
- Existence des fichiers requis
- Vérification de la structure des répertoires
Exemples d'exécution des tests
Lancer tous les tests des modèles :
Tester un modèle précis :
$ pytest tests/test_templates/test_all_templates.py::TestAllTemplates::test_template_creation[fastapi-default] -v
Tester avec un environnement PDM :
Intégration continue
Le système de tests automatisés s'exécute dans les pipelines CI/CD :
- ✅ Validation des pull requests : chaque PR teste les modèles concernés
- ✅ Tests nocturnes : validation complète de la suite de modèles
- ✅ Tests des gestionnaires de paquets : validation croisée avec tous les gestionnaires
- ✅ Tests d'environnement : plusieurs versions de Python et plateformes
Avantages pour les contributeurs
Tests sans configuration :
- 🚀 Ajout d'un nouveau modèle → tests automatiques
- ⚡ Aucune création manuelle de fichier de test requise
- 🛡️ Standards de qualité cohérents
Couverture complète :
- 🔍 Tests de bout en bout de la création de projet
- 📦 Validation multi-gestionnaire de paquets
- 🏗️ Tests complets de résolution des dépendances
- ✅ Simulation d'usage réel
Expérience développeur :
- 🎯 Concentrez-vous sur le contenu du modèle : les tests sont automatiques
- 🔄 Retour immédiat : exécution rapide des tests
- 📊 Résultats clairs : rapport de tests détaillé
- 🚫 Pas de plomberie : zéro configuration de test nécessaire
Inspection manuelle des modèles
Pour le développement et le débogage, vous pouvez inspecter manuellement les modèles avec notre script d'inspection local ou les commandes Makefile :
Utiliser le script d'inspection directement
# Inspect all templates
$ python scripts/inspect-templates.py
# Inspect specific templates
$ python scripts/inspect-templates.py --templates fastapi-default,fastapi-async-crud
# Verbose output with detailed information
$ python scripts/inspect-templates.py --verbose
# Save results to custom file
$ python scripts/inspect-templates.py --output my_results.json
Utiliser les commandes Makefile
# Inspect all templates
$ make inspect-templates
# Inspect with verbose output
$ make inspect-templates-verbose
# Inspect specific templates
$ make inspect-template TEMPLATES="fastapi-default,fastapi-async-crud"
Résultats de l'inspection
- Les inspections réussies sont consignées dans les sorties et artefacts du workflow
- Les inspections échouées créent automatiquement des issues GitHub avec des rapports d'erreur détaillés
- L'historique d'inspection est conservé pendant 30 jours dans les artefacts GitHub Actions
Comprendre la sortie d'inspection
Quand vous exécutez l'inspection de modèles, vous verrez une sortie comme celle-ci :
📋 Found 6 templates to inspect: fastapi-async-crud, fastapi-custom-response, fastapi-default, fastapi-dockerized, fastapi-empty, fastapi-psql-orm
============================================================
🔍 Inspecting template: fastapi-async-crud
Path: /path/to/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud
✅ fastapi-async-crud: PASSED
----------------------------------------
🔍 Inspecting template: fastapi-custom-response
Path: /path/to/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response
✅ fastapi-custom-response: PASSED
----------------------------------------
...
============================================================
📊 INSPECTION SUMMARY
Total templates: 6
✅ Passed: 6
❌ Failed: 0
🎉 All templates passed inspection!
📄 Results saved to: template_inspection_results.json
Exigences des modèles
Pour qu'un modèle passe l'inspection, il doit remplir ces exigences :
Structure des fichiers
- Doit contenir un répertoire
src/avec des fichiers source Python - Les fichiers Python doivent utiliser l'extension
.py-tpl - Doit inclure un répertoire
tests/et un fichierREADME.md-tpl - Doit inclure au moins un fichier de métadonnées :
pyproject.toml-tpl(préféré, PEP 621), ousetup.py-tpl(legacy, toujours accepté)
requirements.txt-tplest optionnel quandpyproject.toml-tpldéclare[project].dependencies
Exigences FastAPI
- Doit contenir l'initialisation de l'application FastAPI
- Doit déclarer
fastapicomme dépendance dans au moins l'un de :pyproject.toml-tpl[project].dependencies,requirements.txt-tpl, ousetup.py-tplinstall_requires - Doit avoir une syntaxe Python valide dans tous les fichiers de modèle
Marqueurs d'identité
Les modèles doivent porter des marqueurs d'identité FastAPI-fastkit afin que les projets générés se distinguent de projets FastAPI non liés dans l'espace de travail de l'utilisateur :
pyproject.toml-tpl— à la fois un préfixe[FastAPI-fastkit templated]dansdescriptionet une table[tool.fastapi-fastkit]avecmanaged = true.setup.py-tpl— préfixe[FastAPI-fastkit templated]dans l'argumentdescriptionpassé àsetup().
is_fastkit_project() accepte n'importe lequel des deux (pyproject prend la priorité, setup.py est le repli legacy ; la comparaison est insensible à la casse). L'injection de métadonnées garantit que les marqueurs finissent dans les projets générés même si un modèle les oublie.
Standards de qualité
- Tous les fichiers de modèle doivent être syntaxiquement corrects
- Les dépendances doivent être correctement spécifiées
- La structure du modèle doit suivre les conventions FastAPI-fastkit
Cette assurance qualité automatisée garantit que tous les modèles restent fiables et prêts pour un usage en production.