Projet 11 du parcours OpenClassrooms Développeur d'application en Python
-
Alors que Django fait beaucoup de choses pour nous, Flask nous permet d'ajouter uniquement ce dont nous avons besoin.
Nous sommes chargés par la société Güdlft d'améliorer leur application de gestion des reservation pour que des clubs de liftings puissent réserver des places en compétitions.
Cette application est écrite avec Python accompagné du framework Flask et plusieurs librairies de tests telles que coverage, pytest, flake8 et locust
Nous devons donc débugger et tester l'application.
Le projet originel se trouve ici : https://github.com/OpenClassrooms-Student-Center/Python_Testing.
Vous devez tout d'abord vous doter de la dernière version de python, vous pouvez la télécharger ici :
Du fait que ce projet est un fork (nouveau logiciel créé à partir d'un logiciel existant), vous dever cloner mon fork, afin de pouvoir rester synchronisé avec mon Git repository, pour ce faire :
-
Ouvrez un terminal de commande
-
Créer un dossier vide. Il contiendra le code complet du projet :
mkdir myproject cd myproject
-
Puis créer un environnement virtuel, et activer le:
python -m venv .env
- Sous Linux/macOS :
.env/bin/activate
- Sous Windows :
.env\Scripts\activate
- Sous Linux/macOS :
-
Afin de cloner, entrez :
Ou utiliser ce repository en téléchargeant le zip.git clone https://github.com/Nathom78/Ameliorez-une-application-Web-Python-par-des-tests-et-du-d-bogage.git
-
Installez les packages python prérequis, au bon fonctionnement du projet avec la commande suivante :
- Version "normale" :
pip install -r requirements.txt
- Version "testing" :
pip install -r requirements_for_testing.txt
- Version "normale" :
Pour faire fonctionner l'application, vous aurez besoin de démarrer Flask, pour cela :
- Ouvrez un terminal externe à votre IDE (integrated development environment) dans le dossier du projet.
- Démarrez avec la commande suivante :
flask --app server run
- Un fichier config.py contient les éléments afin de démarrer l'application Flask, pour l'instant en mode "development".
L'application est alimentée par des fichiers JSON. Il s'agit de contourner le fait d'avoir une base de données jusqu'à ce que nous en ayons réellement besoin. Les principaux sont :
- competitions.json : liste des compétitions
- clubs.json : liste des clubs avec des informations pertinentes. Vous pouvez regarder ici pour voir quelles adresses e-mail l'application acceptera pour la connexion.
Pour ce projet, nous effectuons trois phases de tests, pour cela, nous utiliserons trois outils différents, leur utilisation est expliquée ci-dessous :
Les tests qui ont étés rédigés pour ce projet se trouvent dans le répertoire tests Pour lancer pytest, veuillez entrer la commande suivante dans votre terminal :
pytest .\tests\
Cette commande exécutera tous les tests qui se trouvent dans le répertoire tests, vous pouvez choisir vos tests en ajoutant directement le nom du fichier test ciblé, exemple :
pytest .\tests\tests unitaires\test_login.py
Pour les tests fonctionnels une capture d'écran est créé dans le repertoire static. Suivant le navigateur que vous utilisez, vous devez dans le fichier de test fonctionnel changer le pilote web pour Sélénium
Concernant Locust, vous pouvez consulter les rapports générés avant et après, dans le dossier reports/locust, il s'ouvre dans un navigateur.
Cependant, si vous voulez lancer vous-même le test locust, entrez commandes suivantes dans votre terminal :
locust -f .\tests\performance_tests\locustfile.py --web-host localhost --web-port 4099
Vous aurez alors l'Url suivante générée :
Les tests sont avec 6 utilisateurs. PS: Le serveur doit être lancé en parallel, à utiliser comme Host.
Nous aimons montrer à quel point, nous testons bien, il y a donc un module appelé coverage
Un rapport html, est créé dans le repertoire /reports/coverage avec la commande :
coverage html
ou avec les tests:
pytest --cov=. --cov-report html
PEP 8 – Style Guide for Python Code ici.
Un rapport flake8 au format HTML est disponible dans le repertoire \reports\flake8
, à la racine du projet.