Git Product home page Git Product logo

ameliorez-une-application-web-python-par-des-tests-et-du-d-bogage's Introduction

Améliorez une application Web Python par des tests et du débogage

Projet 11 du parcours OpenClassrooms Développeur d'application en Python

Tests Status Coverage Status Flake8 Status

forthebadge

Technologies


  • Flask

    Alors que Django fait beaucoup de choses pour nous, Flask nous permet d'ajouter uniquement ce dont nous avons besoin.

Présentation :

Güdlft logo

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.

Installation:

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 :

  1. Ouvrez un terminal de commande

  2. Créer un dossier vide. Il contiendra le code complet du projet :

    mkdir myproject
    cd myproject
    

  3. Puis créer un environnement virtuel, et activer le:

    python -m venv .env

    • Sous Linux/macOS :
      .env/bin/activate
    • Sous Windows :
      .env\Scripts\activate 
  4. Afin de cloner, entrez :

    Ou utiliser ce repository en téléchargeant le zip.

  5. 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

Démarrage de l'application :

Pour faire fonctionner l'application, vous aurez besoin de démarrer Flask, pour cela :

  1. Ouvrez un terminal externe à votre IDE (integrated development environment) dans le dossier du projet.
  2. Démarrez avec la commande suivante :
    flask --app server run
  3. Un fichier config.py contient les éléments afin de démarrer l'application Flask, pour l'instant en mode "development".

Configuration actuelle :

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.

La phase de tests :

Pour ce projet, nous effectuons trois phases de tests, pour cela, nous utiliserons trois outils différents, leur utilisation est expliquée ci-dessous :

Pytest :

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

Locust :

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.

Coverage :

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


Conventions de nommage et de codes :

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.

ameliorez-une-application-web-python-par-des-tests-et-du-d-bogage's People

Contributors

nathom78 avatar hayvthom avatar dompatmore avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.