Convertir le modèle .pt en onnx

La conversion d’un modèle du format .pt de PyTorch au format ONNX implique quelques étapes, nécessitant généralement de charger le modèle PyTorch puis d’utiliser une fonction ou une méthode pour l’exporter vers ONNX.

Installez la bibliothèque Ultralytics YOLO

Assurez-vous que la bibliothèque Ultralytics YOLO est installée dans votre environnement Python. Cette bibliothèque fournit les outils et méthodes nécessaires pour travailler avec les modèles YOLO. Vous pouvez l’installer en utilisant pip si elle n’est pas déjà installée :

“`
pip install ultralytics

“`

Importer la classe YOLO

Commencez votre script en important la classe YOLO du paquet ultralytics. Cette classe est conçue pour gérer les modèles YOLO, y compris leur chargement et leur exportation.

“`
from ultralytics import YOLO

“`

Charger votre modèle PyTorch personnalisé

Utilisez la classe YOLO pour charger votre modèle entraîné personnalisé. Vous devez spécifier le chemin d’accès à votre fichier de modèle .pt. Ce fichier doit contenir les poids entraînés et l’architecture du modèle. L’exemple utilise “best.pt”, en supposant qu’il s’agit du nom de votre fichier de modèle.

“`
model = YOLO(‘best.pt’) # load a custom trained model

“`

Exporter le modèle au format ONNX

 

Une fois le modèle chargé, vous pouvez l’exporter au format ONNX en utilisant la méthode d’exportation. Spécifiez le format ‘onnx’ dans l’appel de la méthode. Cela créera un fichier ONNX dans le répertoire de travail actuel ou dans le chemin spécifié (si vous en fournissez un).

 

“`
model.export(format=’onnx’)
“`

Vérifier le fichier modèle ONNX

Après avoir exécuté le script, vous devriez trouver un fichier de modèle ONNX dans votre répertoire de travail. Le nom du fichier sera généralement dérivé du nom de votre fichier .pt original, mais avec une extension .onnx.

Détection d’Objets en Temps Réel avec YOLOv8 sur Plusieurs Caméras et OpenCV

Détection d’Objets en Temps Réel avec YOLOv8 sur Plusieurs Caméras et OpenCV

La détection d’objets en temps réel, utilisant le modèle YOLOv8 via la bibliothèque OpenCV. Ce script illustre comment YOLOv8, une évolution du populaire modèle YOLO pour la détection d’objets, peut être appliqué aux flux vidéo de deux caméras simultanément, offrant une solution puissante et flexible pour la surveillance et l’analyse vidéo en temps réel.

import cv2
from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO(‘yolov8n.pt’)

# Open the video file
video_path = “path/to/your/video/file.mp4”
cap = cv2.VideoCapture(0)

# Loop through the video frames
while cap.isOpened():
# Read a frame from the video
success, frame = cap.read()

if success:
# Run YOLOv8 inference on the frame
results = model(frame)

# Visualize the results on the frame
annotated_frame = results[0].plot()

# Display the annotated frame
cv2.imshow(“YOLOv8 Inference”, annotated_frame)

# Break the loop if ‘q’ is pressed
if cv2.waitKey(1) & 0xFF == ord(“q”):
break
else:
# Break the loop if the end of the video is reached
break

# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()

 

Initialisation et Configuration

Le script commence par importer les bibliothèques nécessaires, notamment

cv2

pour OpenCV, qui est essentiel pour la capture et le traitement des images vidéo, et

YOLO

du module

ultralytics

, qui est spécialement conçu pour charger et utiliser les modèles YOLO, y compris YOLOv8.

Chargement du Modèle YOLOv8

Le modèle YOLOv8 est chargé à partir d’un fichier pré-entraîné (

'yolov8n.pt'

), indiquant une version nano de YOLOv8 qui est optimisée pour une utilisation rapide avec une empreinte mémoire réduite, tout en maintenant une précision raisonnable pour la détection d’objets.

Configuration des Caméras

Deux objets

VideoCapture

sont initialisés pour les caméras aux indices

0

et

2

, correspondant à deux caméras distinctes connectées au système. Le script vérifie si chaque caméra est correctement ouverte, affichant un message d’erreur si une caméra ne peut pas être initialisée.

Boucle de Traitement des Images

Dans une boucle continue, le script lit une image de chaque flux vidéo. Si les deux images sont capturées avec succès, le script applique le modèle YOLOv8 à chaque image pour détecter les objets présents.

Rendu et Affichage des Résultats

Pour chaque image, le script extrait les résultats de la détection et utilise la méthode

plot()

sur le premier objet de résultats pour obtenir une image annotée avec des cadres de délimitation et des étiquettes pour chaque objet détecté. Ces images annotées sont ensuite concaténées horizontalement pour fournir une vue combinée des deux caméras, qui est affichée à l’écran.

Fin de la Session

La boucle se termine lorsque l’utilisateur appuie sur la touche ‘q’, ce qui entraîne la libération des ressources de la caméra et la fermeture des fenêtres d’affichage, clôturant proprement l’application.

Ce script met en évidence la capacité de YOLOv8 à fournir des détections d’objets rapides et précises dans des applications de surveillance en temps réel. L’utilisation de YOLOv8 dans ce contexte illustre non seulement les progrès dans les algorithmes de détection d’objets mais aussi comment ces technologies peuvent être intégrées avec des bibliothèques de traitement d’images comme OpenCV pour créer des systèmes de surveillance sophistiqués capables d’analyser simultanément les flux vidéo de plusieurs sources.

Détection d’Objets en Temps Réel avec YOLOv5 sur Plusieurs Caméras et OpenCV

Détection d’Objets en Temps Réel avec YOLOv5 sur Plusieurs Caméras et OpenCV

Une application pratique de la détection d’objets en temps réel en utilisant le modèle de deep learning YOLOv5 en combinaison avec OpenCV, une bibliothèque populaire pour le traitement d’images et de vidéos. Cette synergie permet de surveiller et d’analyser les flux vidéo de plusieurs caméras simultanément, offrant ainsi une solution robuste pour des applications telles que la surveillance de sécurité, le suivi du trafic ou même des études comportementales en temps réel. Voici une explication détaillée du fonctionnement du script :

 

import cv2
import torch

# Charger le modèle YOLOv5
model = torch.hub.load(‘ultralytics/yolov5’, ‘yolov5x’, pretrained=True)

camera1 = cv2.VideoCapture(0)
camera2 = cv2.VideoCapture(4)

if not camera1.isOpened():
print(‘Erreur …cam1’)

if not camera2.isOpened():
print(‘Erreur.. cam2’)

while True:
ret1, frame1 = camera1.read()
ret2, frame2 = camera2.read()

if ret1 and ret2:
# Appliquer YOLOv5 aux deux images
results1 = model(frame1)
results2 = model(frame2)

# Récupérer les images avec les détections
frame1 = results1.render()[0]
frame2 = results2.render()[0]

# Concaténer les images pour l’affichage
frame = cv2.hconcat([frame1, frame2])
cv2.imshow(“Cameras”, frame)

if cv2.waitKey(1) & 0xFF == ord(‘q’):
break

camera1.release()
camera2.release()
cv2.destroyAllWindows()

 

  1. Importation des bibliothèques nécessaires : Le script commence par importer cv2 (OpenCV) pour la capture vidéo et le traitement d’images, ainsi que torch, une bibliothèque de machine learning qui permet de charger et d’utiliser le modèle YOLOv5.
  2. Chargement du modèle YOLOv5 : Le modèle YOLOv5 est chargé depuis le dépôt ultralytics sur GitHub grâce à la fonction
    torch.hub.load

    , en spécifiant ‘yolov5x’ comme modèle pré-entraîné. ‘yolov5x’ est l’une des versions de YOLOv5, connue pour sa précision élevée, bien qu’elle soit plus gourmande en ressources que ses variantes plus petites.

  3. Initialisation des caméras : Deux objets
    VideoCapture

    sont créés pour les deux caméras.

    cv2.VideoCapture(0)

    et

    cv2.VideoCapture(4)

    sont utilisés pour initialiser la première et la deuxième caméra, respectivement. Les indices des caméras (0 et 4 dans ce cas) dépendent de l’ordre dans lequel les caméras sont reconnues par le système.

  4. Vérification de l’ouverture des caméras : Le script vérifie si chaque caméra a été correctement initialisée. Si une caméra ne peut pas être ouverte, un message d’erreur est affiché.
  5. Boucle de traitement des images : Une boucle
    while True

    est utilisée pour lire les images de chaque caméra en continu.

    camera.read()

    renvoie un booléen qui indique si la lecture a été réussie (

    ret

    ) et l’image capturée (

    frame

    ).

  6. Application de YOLOv5 aux images : Pour chaque image capturée, le modèle YOLOv5 est appliqué via
    model(frame)

    . Cela permet de détecter les objets dans l’image et de renvoyer les résultats, qui incluent les cadres de délimitation, les classes d’objets et les scores de confiance.

  7. Rendu des détections : Les résultats de la détection sont rendus sur les images originales avec
    results.render()

    , qui superpose les cadres de délimitation et les étiquettes d’identification sur les objets détectés.

  8. Affichage des images : Les images traitées de chaque caméra sont concaténées horizontalement avec
    cv2.hconcat

    et affichées dans une fenêtre nommée “Cameras”.

  9. Sortie de la boucle : La boucle peut être interrompue par l’utilisateur en appuyant sur la touche ‘q’, permettant ainsi de fermer proprement les flux vidéo et de détruire toutes les fenêtres OpenCV ouvertes.

Ce script démontre la puissance et la flexibilité de combiner YOLOv5 et OpenCV pour la détection d’objets en temps réel sur plusieurs sources vidéo. L’application de telles technologies ouvre des horizons vastes pour des applications allant de la surveillance de sécurité avancée à des solutions innovantes dans le domaine de la recherche et au-delà.

Reconstruction 3D et Stéréoscopie avec OpenCV

OpenCV est une bibliothèque open-source largement utilisée pour le traitement d’images et la vision par ordinateur. Elle offre un large éventail de fonctions pour la reconstruction 3D et la stéréoscopie.

Stéréoscopie

La stéréoscopie est une technique permettant de créer une illusion de profondeur en combinant deux images prises à partir de points de vue légèrement différents. OpenCV propose plusieurs fonctions pour la stéréoscopie, notamment :

  • Calibrage de la caméra: Cette étape est nécessaire pour déterminer les paramètres intrinsèques et extrinsèques des caméras utilisées pour capturer les images stéréo.
  • Correspondance stéréo: Cette étape consiste à trouver les correspondances entre les pixels des deux images stéréo.
  • Triangulation: Cette étape consiste à calculer les coordonnées 3D des points correspondants.

Reconstruction 3D

La reconstruction 3D est le processus de création d’un modèle 3D à partir d’images 2D. OpenCV propose plusieurs fonctions pour la reconstruction 3D, notamment :

  • Nuage de points: Un nuage de points est un ensemble de points 3D qui représentent la surface d’un objet.
  • Maillage: Un maillage est une collection de triangles qui connectent les points d’un nuage de points.
  • Texture: La texture est une image qui est appliquée à la surface d’un maillage pour lui donner un aspect réaliste.

Exemple d’utilisation:

OpenCV peut être utilisé pour reconstruire un modèle 3D d’un objet à partir de deux images stéréo. La première étape consiste à calibrer les caméras et à trouver les correspondances entre les pixels des deux images. Ensuite, les coordonnées 3D des points correspondants peuvent être calculées par triangulation. Enfin, un nuage de points, un maillage et une texture peuvent être générés à partir des coordonnées 3D.

Ressources supplémentaires:

N’hésitez pas à me poser des questions si vous avez besoin de plus d’informations.

Extraction de Caractéristiques avec le Filtre de Gabor

Les filtres de Gabor sont utilisés pour l’extraction de caractéristiques, notamment pour l’analyse de textures et la reconnaissance de formes.

def gabor_filter(img, kernel_size=21):
# Créer un ensemble de filtres de Gabor avec différentes orientations
gabor_kernels = [cv2.getGaborKernel((kernel_size, kernel_size), 4.0, theta, 10.0, 0.5, 0, ktype=cv2.CV_32F) for theta in np.arange(0, np.pi, np.pi / 4)]

# Appliquer les filtres de Gabor à l’image
filtered_images = [cv2.filter2D(img, cv2.CV_8UC3, kernel) for kernel in gabor_kernels]

return filtered_images

gabor_filtered_images = gabor_filter(gray)

for filtered_image in gabor_filtered_images:
cv2.imshow(‘Gabor Filtered’, filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

Le filtre de Gabor est un outil puissant pour l’extraction de caractéristiques dans le domaine du traitement d’image. Il s’inspire du système visuel humain et s’avère particulièrement efficace pour capturer des textures et des orientations spécifiques dans les images.

Fonctionnement:

Le filtre de Gabor est une ondelette 2D définie par une fonction gaussienne modulée par une sinusoïde. Il est paramétré par plusieurs variables:

  • Échelle: Détermine la taille du filtre et la grossièreté des textures qu’il peut capturer.
  • Orientation: Détermine l’angle des structures que le filtre recherche.
  • Fréquence: Détermine la finesse des détails que le filtre peut capturer.

Applications:

L’extraction de caractéristiques avec le filtre de Gabor trouve de nombreuses applications dans le traitement d’image, notamment:

  • Détection de visage: Le filtre de Gabor peut être utilisé pour détecter des caractéristiques faciales telles que les yeux, le nez et la bouche.
  • Classification de textures: Le filtre de Gabor peut être utilisé pour distinguer différentes textures, comme la peau, les cheveux et les vêtements.
  • Segmentation d’image: Le filtre de Gabor peut être utilisé pour segmenter une image en différentes régions en fonction de leurs caractéristiques textuelles.

Avantages:

  • Efficacité: Le filtre de Gabor est un outil efficace pour capturer des textures et des orientations spécifiques dans les images.
  • Flexibilité: Les paramètres du filtre de Gabor peuvent être ajustés pour s’adapter à différentes applications.
  • Interprétabilité: Les caractéristiques extraites par le filtre de Gabor sont faciles à interpréter et à visualiser.

Inconvénients:

  • Calculatoire: Le calcul des réponses du filtre de Gabor peut être gourmand en temps de calcul.
  • Sensibilité au bruit: Le filtre de Gabor est sensible au bruit présent dans l’image.

Conclusion:

Le filtre de Gabor est un outil puissant et flexible pour l’extraction de caractéristiques dans le domaine du traitement d’image. Il est particulièrement efficace pour capturer des textures et des orientations spécifiques dans les images.

Ressources supplémentaires:

N’hésitez pas à me poser des questions si vous avez besoin de plus d’informations.

Installer Python dans Visual Studio Code (VSCode)

Installer Python dans Visual Studio Code (VSCode)

Pour installer Python dans Visual Studio Code (VSCode), suivez ces étapes :

  1. Installez Python sur votre ordinateur:
    • Téléchargez Python depuis le site officiel de Python .
    • Exécutez l’installateur. Durant l’installation, assurez-vous de cocher l’option “Add Python to PATH” (Ajouter Python au PATH) pour faciliter l’accès à Python depuis la ligne de commande.
  2. Installez Visual Studio Code:
  3. Ouvrez Visual Studio Code.
  4. Installez l’extension Python pour Visual Studio Code:
    • Dans VSCode, allez à l’onglet “Extensions” (le symbole du carré divisé en quatre sur la barre latérale gauche) ou utilisez le raccourci
      Ctrl+Shift+X

      .

    • Cherchez “Python” dans la barre de recherche des extensions.
    • Trouvez l’extension “Python” développée par Microsoft et cliquez sur “Installer”.
  5. Configurer l’interpréteur Python:
    • Une fois l’extension installée, ouvrez un fichier Python (un fichier avec l’extension
      .py

      ).

    • Si vous ouvrez un fichier Python pour la première fois, VSCode peut vous demander de sélectionner un interpréteur Python. Si ce n’est pas le cas, vous pouvez sélectionner ou changer l’interpréteur en cliquant sur la barre d’état en bas à gauche de la fenêtre de VSCode, où il est écrit “Select Python Interpreter”.
    • Dans la liste déroulante, choisissez l’interpréteur Python que vous souhaitez utiliser. Il doit correspondre à la version de Python que vous avez installée sur votre système.
  6. Vérifier l’installation:
    • Pour vérifier que tout est configuré correctement, créez un nouveau fichier Python (par exemple,
      test.py

      ) et écrivez un petit script, comme

      print("Hello, Python!")

      .

    • Exécutez ce script en faisant un clic droit dans l’éditeur de texte et en choisissant “Run Python File in Terminal” (Exécuter le fichier Python dans le Terminal). Vous devriez voir le résultat s’afficher dans le terminal intégré de VSCode.

Ces étapes vous permettront de configurer Python dans VSCode, vous offrant un environnement de développement intégré pour écrire et exécuter vos scripts Python.

configurer Visual Studio Code (VSCode) pour le développement en Python

configurer Visual Studio Code (VSCode) pour le développement en Python

Pour configurer Visual Studio Code (VSCode) pour le développement en Python, voici les étapes clés :

  1. Installer Visual Studio Code : Si vous n’avez pas encore installé VSCode, téléchargez-le depuis le site officiel et suivez les instructions d’installation pour votre système d’exploitation.
  2. Installer Python : Assurez-vous que Python est installé sur votre système. Vous pouvez télécharger Python depuis le site officiel de Python. Pendant l’installation, assurez-vous d’ajouter Python au PATH de votre système.
  3. Ouvrir VSCode : Après avoir installé VSCode, ouvrez-le.
  4. Installer l’extension Python pour VSCode :
    • Allez à la vue Extensions en cliquant sur l’icône en forme de carré dans la barre latérale, ou en appuyant sur
      Ctrl+Shift+X

      .

    • Recherchez
      Python

      et trouvez l’extension de Microsoft.

    • Cliquez sur le bouton Installer.
  5. Ouvrir un projet Python :
    • Vous pouvez ouvrir un dossier contenant votre projet Python en allant dans
      Fichier > Ouvrir le dossier

      .

    • Alternativement, vous pouvez créer un nouveau fichier et l’enregistrer avec une extension
      .py

      .

  6. Sélectionner un interpréteur Python :
    • Après avoir ouvert un fichier Python, il se peut qu’on vous demande de sélectionner un interpréteur Python.
    • Si ce n’est pas le cas, vous pouvez le sélectionner en cliquant sur la version Python dans la barre d’état en bas de la fenêtre, ou en appuyant sur
      Ctrl+Shift+P

      et en tapant

      Python: Select Interpreter

      .

    • Choisissez la version de Python que vous souhaitez utiliser dans la liste.
  7. Installer d’autres extensions utiles (Optionnel) :
    • Des extensions comme
      Pylance

      pour un meilleur support du langage Python,

      Jupyter

      pour le support des notebooks Jupyter, ou

      Django

      pour des fonctionnalités spécifiques à Django peuvent être utiles.

    • Recherchez et installez ces extensions depuis la vue Extensions.
  8. Configurer les paramètres (Optionnel) :
    • Accédez aux paramètres en allant dans
      Fichier > Préférences > Paramètres

      ou en appuyant sur

      Ctrl+,

      .

    • Personnalisez les paramètres comme la configuration du linter, les outils de formatage de code (comme autopep8 ou black), et plus encore.
  9. Exécuter du code Python :
    • Vous pouvez exécuter du code Python en faisant un clic droit dans l’éditeur et en sélectionnant
      Exécuter le fichier Python dans le terminal

      .

    • Alternativement, vous pouvez utiliser le bouton de lecture dans le coin supérieur droit de l’éditeur lorsqu’un fichier Python est ouvert.
  10. Débogage :
    • Placez des points d’arrêt en cliquant à gauche des numéros de ligne.
    • Appuyez sur
      F5

      pour commencer le débogage. Vous pouvez parcourir votre code étape par étape, inspecter les variables et voir les piles d’appels.

  11. Utiliser le terminal intégré :
    • VSCode est équipé d’un terminal intégré. Accédez-y en allant dans
      Affichage > Terminal

      ou en appuyant sur

      Ctrl+`

      .

    • Vous pouvez exécuter des scripts Python et gérer des packages directement depuis ce terminal.

En suivant ces étapes, vous devriez avoir un environnement de développement Python fonctionnel dans VSCode. N’oubliez pas, VSCode est hautement personnalisable, donc vous pouvez ajuster les paramètres et les extensions pour s’adapter à votre flux de travail.

Créer un environnement virtuel avec PyCharm

Créer un environnement virtuel avec PyCharm

Créer un environnement virtuel avec PyCharm est un processus assez simple. Voici les étapes à suivre :

1. Ouvrir ou Créer un Projet dans PyCharm

  • Ouvrir PyCharm et sélectionnez
    Open

    pour ouvrir un projet existant, ou

    New Project

    pour en créer un nouveau.

2. Configurer l’Environnement Virtuel pour un Nouveau Projet

Si vous créez un nouveau projet :

  • Dans la fenêtre
    New Project

    , donnez un nom à votre projet.

  • Sous
    Project Interpreter

    , sélectionnez

    New environment using

    et assurez-vous que

    Virtualenv

    est sélectionné. Cela va créer un nouvel environnement virtuel pour votre projet.

  • Choisissez la version de Python à utiliser dans le menu déroulant.
  • Spécifiez le dossier où l’environnement virtuel sera créé. Par défaut, il sera créé dans un sous-dossier de votre projet.
  • Cliquez sur
    Create

    .

3. Configurer l’Environnement Virtuel pour un Projet Existant

Si vous travaillez sur un projet existant :

  • Allez dans
    File

    >

    Settings

    (sur Windows ou Linux) ou

    PyCharm

    >

    Preferences

    (sur Mac).

  • Dans la fenêtre des paramètres, naviguez jusqu’à
    Project: [nom_de_votre_projet]

    >

    Python Interpreter

    .

  • Cliquez sur l’icône de roue dentée à côté de la liste déroulante de l’interpréteur et sélectionnez
    Add

    .

  • Dans la fenêtre
    Add Python Interpreter

    , sélectionnez

    Virtualenv Environment

    .

  • Choisissez
    New environment

    .

  • Sélectionnez la version de Python à utiliser dans le menu déroulant et spécifiez le dossier où l’environnement virtuel sera créé.
  • Cliquez sur
    OK

    .

4. Utilisation de l’Environnement Virtuel

  • Une fois que vous avez configuré votre environnement virtuel, PyCharm l’utilisera automatiquement pour exécuter et déboguer les scripts Python de votre projet.
  • Vous pouvez installer des packages spécifiques à cet environnement via la fenêtre
    Python Interpreter

    en suivant les étapes de gestion des packages.

5. Installation de Packages (Facultatif)

  • Dans
    Python Interpreter

    , vous pouvez ajouter des packages en cliquant sur le symbole

    +

    et en cherchant les packages nécessaires.

  • Installation via PyCharm:
    • Ouvrez les
      Settings

      ou

      Preferences

      de PyCharm.

    • Allez dans
      Project: [nom_de_votre_projet]

      >

      Python Interpreter

      .

    • Cliquez sur le
      +

      pour ajouter des packages.

    • Cherchez les packages dont vous avez besoin (par exemple,
      requests

      ,

      flask

      ,

      numpy

      ) et cliquez sur

      Install Package

      .

  • Installation via le Terminal de PyCharm:
    • Ouvrez le terminal intégré dans PyCharm (généralement situé en bas de la fenêtre).
    • Assurez-vous que l’environnement virtuel est activé (il doit y avoir un préfixe avec le nom de votre environnement virtuel).
    • Utilisez
      pip

      pour installer des packages, par exemple :

      pip install requests

      .

Pytest

pytest

est un framework de tests populaires en Python qui rend les tests simples et évolutifs. Il offre des fonctionnalités qui rendent les tests plus pratiques et fournit des résultats clairs et détaillés. Voici quelques-unes des caractéristiques et fonctionnalités principales de

pytest

:

Caractéristiques principales

  1. Syntaxe simple: Écrivez des tests utilisant la syntaxe Python normale et les assertions standard.
  2. Fixtures: Réutilisez du code pour la mise en place et la démolition avec des fixtures.
  3. Paramétrage: Exécutez le même test avec différents arguments.
  4. Plugins: Étendez
    pytest

    avec une multitude de plugins disponibles ou écrivez le vôtre.

  5. Auto-découverte des tests: Les tests sont automatiquement découverts par
    pytest

    .

  6. Tests parallèles: Avec des plugins tels que
    pytest-xdist

    , vous pouvez exécuter des tests en parallèle, accélérant l’exécution.

  7. Fonctionnalités avancées: Comme le marquage de tests, sauter des tests, ou les exécuter en fonction des conditions.

Exemples

Test simple:

 

def test_sample():
    assert 1 == 1

Utilisation des fixtures:

 

@pytest.fixture
def sample_data():
    return [1, 2, 3, 4, 5]

def test_mean(sample_data):
    assert sum(sample_data) / len(sample_data) == 3

Paramétrage:

 

@pytest.mark.parametrize("a, b, expected", [
    (1, 2, 3),
    (4, 5, 9),
    (10, 20, 30)
])
def test_addition(a, b, expected):
    assert a + b == expected

Marquage et saut de tests:

 

@pytest.mark.skip(reason="Skip this test for now")
def test_for_skip():
    assert False

Installation

Pour installer

pytest

, vous pouvez utiliser

pip

:

 

pip install pytest

Exécution

Pour exécuter les tests, allez à la racine de votre projet où vos tests sont situés et exécutez simplement:

 

pytest
pytest

recherchera automatiquement les fichiers qui suivent le motif

test_*.py

ou

*_test.py

et exécutera toutes les fonctions et classes qui commencent par

test

.

Conclusion

pytest

est un outil puissant qui fournit une manière simplifiée d’écrire et d’exécuter des tests en Python. Grâce à sa flexibilité et à sa richesse en fonctionnalités, il est devenu l’un des frameworks de test les plus populaires dans la communauté Python.

Comparer les types de données de collection dans le langage de programmation Python

Voici une comparaison des principaux types de données de collection (ou conteneurs) dans le langage de programmation Python

 

Chaque type de collection a ses propres utilisations et avantages en fonction de ce que vous souhaitez accomplir dans votre code. Il est important de comprendre les caractéristiques et les contraintes de chaque type pour l’utiliser efficacement.

Type Description Ordre conservé Mutable Duplicates Accès
List Collection ordonnée d’éléments Oui Oui Oui Indexé (par numéro)
Tuple Collection ordonnée et immuable d’éléments Oui Non Oui Indexé (par numéro)
Set Collection non ordonnée d’éléments uniques Non Oui Non Non-indexé
Frozenset Version immuable d’un set Non Non Non Non-indexé
Dict Collection non ordonnée de paires clé-valeur Depuis Python 3.7, oui Oui Clés uniques Clé

1 2 3 4 5 6 7 8 9 10