in

Débogage facilité : utilisez Pytest pour retrouver et corriger votre code Python | par Egor Howell | Avril 2023


DEBUGGING FACILE : UTILISER PYTEST POUR TROUVER ET RÉSOUDRE LES ERREURS DU CODE PYTHON

En tant que data scientist, vous avez probablement développé un algorithme incroyable qui rapportera beaucoup d’argent à l’entreprise. Cependant, avant de le mettre en production, une vérification s’impose pour s’assurer que le code est exempt d’erreurs et qu’il fonctionne correctement. C’est là que les tests entrent en jeu, des outils de base pour tout projet de développement de logiciels. Dans cet article, nous allons explorer les tests unitaires et l’utilisation de Pytest, une bibliothèque populaire de tests unitaires pour Python.

L’IMPORTANCE DES TESTS UNITAIRES

Les tests permettent de détecter les erreurs et les bugs dans le code. Les tests unitaires, en particulier, sont utilisés pour tester les petites parties de code, telles que les fonctions et les classes. Les avantages des tests unitaires sont multiples : ils accélèrent la correction des erreurs, assurent la robustesse et la maintenabilité du code, permettent une identification précoce des bugs, et favorisent une conception logique et efficace du code.

PYTEST : UNE SOLUTION SIMPLE POUR LES TESTS UNITAIRES EN PYTHON

Pytest est probablement la bibliothèque de tests unitaires la plus populaire en Python. Elle est largement utilisée pour les tests unitaires et propose de nombreuses fonctionnalités intéressantes, telles que la possibilité d’étiqueter et de sauter des tests, ainsi que l’exécution parallèle de tests. Pytest est également très facile à utiliser, ce qui en fait un choix judicieux pour les débutants.

COMMENT UTILISER PYTEST

Commencez par installer Pytest en utilisant pip :

pip install pytest

Il est également recommandé de créer un dossier séparé pour les tests, tel que « tests/ », et de préfixer tous les fichiers de test avec « test_ » ou de les suffixer avec « _test ». Tous les noms de fonctions et de classes de test doivent commencer par « test_ » pour que Pytest les reconnaisse comme étant des tests.

Pour créer un test simple, créez un fichier nommé « calculations.py » contenant une fonction qui calcule la somme de deux nombres :

“`python
def sum(a: float, b: float) -> float:
“””
Calcule la somme de deux nombres.
:param a: Le premier nombre.
:param b: Le deuxième nombre.
:return: La somme des deux nombres.
“””
return a + b
“`

Créez ensuite un fichier nommé « test_calculations.py » contenant un test pour cette fonction :

“`python
from calculations import sum

def test_sum():
assert sum(5, 10) == 15
“`

Exécutez ensuite le test en tapant ceci dans votre terminal :

pytest

Il devrait afficher « Passed », confirmant que le test a réussi. Vous pouvez également exécuter ce test en utilisant la commande suivante :

pytest test_calculations.py

Ajoutons maintenant une deuxième fonction, « multiply », qui calcule le produit de deux nombres :

“`python
def multiply(a: float, b: float) -> float:
“””
Calcule le produit de deux nombres.
:param a: Le premier nombre.
:param b: Le deuxième nombre.
:return: Le produit des deux nombres.
“””
return a * b
“`

Pour tester cette fonction, ajoutez le code suivant à « test_calculations.py » :

“`python
from calculations import sum, multiply

def test_multiply():
assert multiply(5, 10) == 50
“`

Exécutez tous les tests en tapant « pytest » dans votre terminal. Pytest exécutera automatiquement tous les tests dans le dossier de test spécifié.

UTILISER LES FIXTURES ET PARAMETRIZE AVEC PYTEST

Les fixtures et les parametrizes sont des fonctionnalités avancées de Pytest. Les fixtures sont des fonctions qui préparent des données pour les tests, de sorte que le même jeu de données est utilisé pour tous les tests. Les paramétrages permettent de tester plusieurs cas de manière simple en utilisant un tableau de données.

Voici à quoi ressemble un exemple de paramétrisation pour tester plusieurs entrées dans la fonction « sum » :

“`python
@pytest.mark.parametrize(“a, b, expected_output”,
[(1, 3, 4), (10, 50, 60), (100, 0, 100)])
def test_sum(a, b, expected_output):
assert sum(a, b) == expected_output
“`

Il existe de nombreuses façons d’utiliser Pytest pour les tests unitaires en Python. Nous avons couvert les bases ici, mais il existe de nombreux autres outils et fonctions avancées qui peuvent être utilisés. Par exemple, il est possible de réaliser des tests de couverture de code pour savoir à quel point un code est testé, et de générer des rapports de couverture pour identifier les zones qui nécessitent des tests supplémentaires.

En conclusion, le test unitaire est un sujet important pour tout développeur de logiciels, y compris les data scientists. Pytest est une bibliothèque de tests unitaires facile à utiliser et constitue un excellent choix pour ceux qui souhaitent se familiariser avec les tests unitaires en Python.

Sources :

– https://towardsdatascience.com/a-beginners-tutorial-on-unit-testing-and-how-to-carry-them-out-in-pytest-6203e968f925
– https://docs.pytest.org/en/stable/
– https://www.python.org/dev/peps/pep-0008/
– https://www.codementor.io/@sagaragarwal94/why-and-how-to-write-a-good-unit-test-c11jvn4xb
– https://realpython.com/pytest-python-testing/

What do you think?

Written by Pierre T.

Leave a Reply

Your email address will not be published. Required fields are marked *

Générateur de combinaisons de polices.

“Panic annonce avoir vendu plus de 50 000 consoles portables Playdate.”