Bubhux / Projet-Gudlft

Python Flask Locust Selenium

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Static Badge Static Badge
Static Badge
Static Badge
Static Badge

Static Badge
Static Badge
Static Badge

Menu

  1. Informations générales
  2. Fonctionnalités
  3. Liste pré-requis
  4. Création environnement
  5. Activation environnement
  6. Installation des librairies
  7. Exécution de l'application
  8. Tests et couverture de code
  9. Tests unitaires
  10. Tests d'intégrations
  11. Tests fonctionels
  12. Tests de performances avec Locust
  13. Tests de couverture de code avec Coverage
  14. Rapport avec flake8
  15. Informations importantes sur les différents fichiers et dossiers
  16. Auteur et contact

Projet Gudlft

Logo Gudlft
  • Application destinée à la réservation d'événements sportifs.
  • L'objectif de ce projet est d'apporter des corrections aux fonctions existantes et d'implémenter de nouvelles fonctions.
  • Effectuer un processus de test avec Pytest et Locust.

Plusieurs domaines de l'application Gudlft ont été améliorés à partir du projet forker et cloner à l'adresse suivante :
Python_Testing


. Correction des erreurs

  • ERROR : Entering a unknown email crashes the app
  • BUG : Clubs should not be able to use more than their points allowed
  • BUG : Clubs shouldn't be able to book more than 12 places per competition
  • BUG : Booking places in past competitions
  • BUG : Point updates are not reflected
  • FEATURE : Implement Points Display Board

. Amélioration des fonctionnalités

def loadClubs():
def loadCompetitions():
def index():
def showSummary():
def book():
def purchasePlaces():

. Création des fonctionnalités

def load_mock_clubs():
def load_mock_competitions():
def display_points_clubs():

Retour en haut 🡅

Fonctionnalités

  • Opérations de réservation pour les événements disponibles sur l'application.
  • Visualisation des clubs et du nombre de points.

Note : Testé sous Windows 10 Professionnel - Python 3.12.0 - Flask 3.0.0


Retour en haut 🡅

Liste pré-requis

  • Interpréteur Python, version 3.12 ou supérieure

Application conçue avec les technologies suivantes :

  • Python v3.12.0 choisissez la version adaptée à votre ordinateur et système.

  • Python est disponible à l'adresse suivante ➔ https://www.python.org/downloads/

  • Flask version 3.0.0 ➔ Documentation Flask

  • Windows 10 Professionnel
     

  • Les scripts Python s'exécutent depuis un terminal.

    • Pour ouvrir un terminal sur Windows, pressez la touche windows + r et entrez cmd.
    • Sur Mac, pressez la touche command + espace et entrez terminal.
    • Sur Linux, vous pouvez ouviri un terminal en pressant les touches Ctrl + Alt + T.

Retour en haut 🡅

Création de l'environnement virtuel

  • Installer une version de Python compatible pour votre ordinateur.
  • Une fois installer ouvrer le cmd (terminal) placer vous dans le dossier principal (dossier racine).

Taper dans votre terminal :

$ python -m venv env

Un répertoire appelé env doit être créé.


Retour en haut 🡅

Activation de l'environnement virtuel

  • Placez-vous avec le terminal dans le dossier principale (dossier racine).

Pour activer l'environnement virtuel créé, il vous suffit de taper dans votre terminal :

$ env\Scripts\activate.bat
  • Ce qui ajoutera à chaque début de ligne de commande de votre terminal (env) :

Note : Pour désactiver l'environnement virtuel, il suffit de taper dans votre terminal :

$ deactivate

Retour en haut 🡅

Installation des librairies

  • Le programme utilise plusieurs librairies externes et modules de Python, qui sont répertoriés dans le fichier requirements.txt.
  • Placez-vous dans le dossier où se trouve le fichier requirements.txt avec le terminal, l'environnement virtuel doit être activé.
  • Pour faire fonctionner le programme, il vous faudra installer les librairies requises.
  • À l'aide du fichiers requirements.txt mis à disposition.

Taper dans votre terminal la commande :

$ pip install -r requirements.txt

Retour en haut 🡅

Exécution de l'application

Utilisation

Lancement du serveur Flask.

  • Utilisation de Flask. ➔ Documentation Flask
  • Placez-vous avec le terminal dans le dossier principal.
  • Activer l'environnement virtuel et ensuite lancer le serveur Flask.

Taper dans votre terminal la commande :

$ set FLASK_APP=server.py
$ flask run

Lancement de l'application dans le navigateur de votre choix.
Se rendre à l'adresse. ➔ http://127.0.0.1:5000/

Note navigateur : Les tests ont était fait sur Firefox et Google Chrome.


Retour en haut 🡅

Tests et couverture de code

  • Nous effectuons des tests de plusieurs manières pour garantir la qualité du code.

Note : Pour exécuter les tests il est nécessaire d'avoir activer l'environnement virtuel, mais il n'est pas nécessaire de lancer le serveur Flask.

Exécution de Pytest

  • Utilisation de Pytest. ➔ Documentation Pytest
  • Pour exécuter les tests à l'aide de Pytest, utilisez la commande suivante :
$ pytest -v
tests\functional_tests\test_server_functional.py                                              [11%]
tests\integration_tests\test_server_points_table.py                                           [14%]
tests\integration_tests\test_server_purchase_places.py                                        [45%]
tests\unitary_tests\test_server_book.py                                                       [50%]
tests\unitary_tests\test_server_exception.py                                                  [64%]
tests\unitary_tests\test_server_loading_json.py                                               [80%]
tests\unitary_tests\test_server_login.py                                                      [95%]
tests\unitary_tests\test_server_save_data.py                                                 [100%]

=================================== 42 passed in 97.09s (0:01:37) =================================

Retour en haut 🡅

Tests unitaires

  • Les tests unitaires sont générés et exécutés grâce au module Pytest.
  • Ils sont situés dans le dossier tests/unitary_tests/ ➔ (unitary_tests).
    • test_server_book.py
    • test_server_exception.py
    • test_server_loading_json.py
    • test_server_login.py

Retour en haut 🡅

Tests d'intégrations

  • Les tests d'intégrations sont générés et exécutés grâce au module Pytest.
  • Ils sont situés dans le dossier tests/integration_tests/ ➔ (integration_tests).
    • test_server_points_table.py
    • test_server_purchase_places.py

Retour en haut 🡅

Tests fonctionels

  • Utilisation de Selenium. ➔ Documentation Selenium

  • Les tests fonctionels sont générés et exécutés grâce au module Selenium.

  • Ils sont situés dans le dossier tests/functionnal_tests/ ➔ (functional_tests).

    • test_server_functional.py
       
  • Les tests vérifient :

    • le fonctionnement du serveur
    • la navigation sur les pages
    • la saisie de données
    • la validation de l'affichage

Chaque méthode de test est conçue pour tester un aspect spécifique de l'application.

  • Les tests sont les suivants :
1. def test_home_page(): 
# Vérifie que la page d'accueil s'affiche correctement et contient le titre attendu.   
2. def test_display_points_table_clubs():
# Vérifie que la page "View clubs points" s'affiche correctement
# et affiche le message "Points available by clubs". 
3. def test_login_user():
# Test le processus de connexion de l'utilisateur
# et vérifie que la page de bienvenue affiche l'adresse e-mail de l'utilisateur connecté.   
4. def test_book_places_reservation_success():
# Teste le processus de réservation de places pour une compétition.
# Il simule la sélection de places, la réservation et vérifie le message de confirmation.   
5. def test_book_places_reservation_success():
# Teste le processus de réservation de places pour une compétition.
# Il simule la sélection de places, la réservation et vérifie le message de confirmation.
# Ensuite, le test vérifie que les points disponibles sont mis à jour
# conformément à la réservation effectuée et que le nombre
# de places disponibles pour cette compétition est correctement réduit.   
6. def test_logout():
# Teste le processus de déconnexion de l'utilisateur et vérifie que l'utilisateur est redirigé
# vers la page de connexion.   

Retour en haut 🡅

Tests de performances avec Locust

  • Utilisation de Locust. ➔ Documentation Locust.

  • Les tests de performances sont générés et exécutés grâce au module Locust.

  • Ils sont situés dans le dossier tests/performance_tests/ ➔ (performance_tests).

    • locustfile.py
  • Lancer le serveur de test de performance :

$ locust -f tests\performance_tests\locustfile.py

Sur cette page, vous devez préciser :

  • Number of total users to simulate : le nombre total d'utilisateurs à simuler.
  • Spawn rate : le taux de création d'utilisateurs, il correspond au nombre d’utilisateurs créés par seconde jusqu’à atteindre le nombre total d’utilisateurs.
  • Host : l’adresse de l'application, dans notre cas http://127.0.0.1:5000/ l’application est lancée sur le localhost.

Page de connexion Locust

Page de connexion

Rapport Locust

Rapport Locust

Type Name # reqs # fails Avg Min Max Med req/s failures/s
GET .index 10 0(0.00%) 79 23 123 62 0.30 0.00
POST .showSummary 10 0(0.00%) 47 23 116 33 0.30 0.00
GET // 559 0(0.00%) 120 13 220 120 16.63 0.00
GET //logout 528 0(0.00%) 118 14 218 120 15.71 0.00
POST //purchasePlaces 585 0(0.00%) 63 7 164 63 17.40 0.00
POST //showSummary 635 0(0.00%) 63 8 160 63 18.89 0.00
GET /logout 10 0(0.00%) 101 84 109 109 0.30 0.00
GET book 545 0(0.00%) 60 6 163 61 16.21 0.00
GET display_points_clubs 578 0(0.00%) 60 5 161 61 17.19 0.00
Aggregated                     3460      0(0.00%)    80      5      220    69      102.93   0.00

Response time percentiles (approximated)

Type Name 50% 66% 75% 80% 90% 95% 98% 99% 99.9% 99.99% 100% # reqs
GET .index 80 100 120 120 120 120 120 120 120 120 120 10
POST .showSummary 42 47 55 65 120 120 120 120 120 120 120 10
GET // 120 130 140 140 160 170 190 200 220 220 220 559
GET //logout 120 130 140 140 160 180 200 200 220 220 220 528
POST //purchasePlaces 63 69 73 75 84 92 100 120 160 160 160 585
POST //showSummary 63 69 73 76 87 94 100 120 160 160 160 635
GET /logout 110 110 110 110 110 110 110 110 110 110 110 10
GET book 61 66 71 73 82 89 100 110 160 160 160 545
GET display_points_clubs 61 67 71 74 83 93 100 110 160 160 160 578
Aggregated                     69      85     100       110     130     150     170    190     220      220      220    3460

Retour en haut 🡅

Tests de couverture de code avec Coverage

  • Utilisation de Coverage pour mesurer la couverture de code. ➔ Documentation Coverage
  • Cette commande exécute les tests en utilisant Coverage pour collecter les informations de couverture.
$ pytest --cov=.
tests\functional_tests\test_server_functional.py                                               [11%]
tests\integration_tests\test_server_points_table.py                                            [14%]
tests\integration_tests\test_server_purchase_places.py                                         [45%]
tests\unitary_tests\test_server_book.py                                                        [50%]
tests\unitary_tests\test_server_exception.py                                                   [64%]
tests\unitary_tests\test_server_loading_json.py                                                [80%]
tests\unitary_tests\test_server_login.py                                                       [95%]
tests\unitary_tests\test_server_save_data.py                                                  [100%]

---------- coverage: platform win32, python 3.12.0-final-0 -----------
Name        Stmts   Miss  Cover
-------------------------------
server.py     161      0   100%
-------------------------------
TOTAL         161      0   100%


================================= 42 passed in 103.20s (0:01:43) =================================

Renvoie : 100% de couverture de code.

  • Pour afficher un rapport de couverture avec plus de détails.
$ pytest --cov=. --cov-report html
  • Cela générera un dossier htmlcov dans lequel vous pouvez ouvrir le fichier index.html pour visualiser un rapport interactif de la couverture de code dans votre navigateur.

Rapport Coverage

Rapport Coverage


Retour en haut 🡅

Rapport avec flake8

Tapez dans votre terminal la commande :

$ flake8
  • Ne renvoie aucune erreur.

Retour en haut 🡅

Informations importantes sur les différents fichiers et dossiers

Le dossier tests

Le dossier templates

  • Le dossier contient toute la configuration des pages html ➔ (templates)

Le dossier static

  • Dossier qui contient qui contient les images et les badges nécessaire à l'application.

Le fichier .coveragerc

  • Le fichier contient la configuration de Coverage ➔ (.coveragerc)

Le fichier .flake8

  • Le fichier contient la configuration de Flake8 ➔ (.flake8)

Retour en haut 🡅

Auteur et contact

Pour toute information supplémentaire, vous pouvez me contacter.
Bubhux : bubhuxpaindepice@gmail.com

About

Python Flask Locust Selenium


Languages

Language:Python 92.6%Language:HTML 6.6%Language:CSS 0.7%