• 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 25/04/2022

Codez votre premier test

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Commençons par prendre une fonction qui permet de calculer la valeur absolue d’un nombre.

def to_absolute(number):
if number <= 0:
return -number
return number

Comment allons-nous coder ce test ?

Python intègre une fonctionnalité qui, selon moi, est grandiose : les doctests.

Peut-être êtes-vous déjà familier avec les docstrings ? Si vous parcourez le code des projets du cours, vous verrez à de nombreuses reprises trois guillemets, une phrase, puis de nouveau trois guillemets.

Voici un exemple de docstring avec notre fonctionto_absolute(value):

def to_absolute(number):
"""
Return the absolute value
:param number: Initial number
:return: The absolute value
"""
if number <= 0:
return -number
return number

Les docstrings sont très similaires aux commentaires, mais ils sont sur plusieurs lignes. Ils servent à documenter du code, autrement dit à expliquer ce qui est attendu.

Pourquoi vous parler des docstrings dans un cours sur les tests ? Car vous pouvez les utiliser pour exécuter des tests à l'intérieur. Cela porte le petit nom de “doctest”.

Écrivez un doctest

Un doctest reprend la présentation d'un terminal. Ajoutez trois chevrons au début d'une ligne pour imiter un terminal, puis le résultat attendu juste en dessous. Je vous montre !

"""
>>> to_absolute(3)
3
"""

Que fait-on ?

Nous exécutons la fonctionto_absoluteavec pour argument3, exactement comme si nous étions dans un terminal. Enfin, nous indiquons à la ligne la réponse attendue :3.

Nous pouvons aussi ajouter plusieurs tests à la suite afin de vérifier plusieurs scénarios, comme ci-dessous : 

"""
>>> to_absolute(3)
3
>>> to_absolute(-10)
10
"""

Comment lancer le test ? 

En utilisant la commande suivante dans votre terminal :

python -m doctest <nom du fichier>

Par exemple, si votre fonction est implémentée dans le fichiermain.py, il faudra lancer la commande suivante :

python -m doctest main.py

Et voilà ! Tout est prêt !

Dans le terminal, une ligne de commande Python -m doctest main.py a été indiquée.

Rien n'apparaît ? C'est normal ! Nous devons lui indiquer de nous parler

Pour cela, ajoutons-vaprès le mot-clédoctest:

python -m doctest -v <nom du module>
En ajoutant -v et le module main.py, le doctest se lance. Cette fois-ci, nous avons plus de détails sur l’ensemble des doctests.

Parfait ! Les tests sont bien exécutés !

J’ai fait un petit screencast pour vous montrer toutes les étapes nécessaires pour mettre en place les doctests sur une fonction 

Si vous avez des fonctions qui ne contiennent pas de test, le doctest aura l'intelligence de nous signaler toutes les méthodes qui n'ont pas de test ! Vous pouvez essayer de créer une fonction sans doctest et de relancer la commande, vous verrez le résultat.

Les doctests sont très utiles en tant que documentation. Ils fournissent un exemple concret de la manière dont le programme est censé fonctionner.

Pour ma part, je suis assez content, mais j'aimerais avoir un document dans lequel je pourrais lire uniquement mes tests. C'est pourquoi je vous propose de voir une autre façon de créer des tests dans un fichier dédié aux tests.

Créez un fichier de tests

Créez un nouveau fichier dans le dossier parent des scripts, au même niveau que leREADME.md, ou créez ce fichier dans un packagetests/qui contiendra l’ensemble des tests de l’application. Cela nous permettra de différencier le code source et les fichiers de test.

À présent, comment créer des tests ?

Vous ne pourrez pas utiliser les doctests ici, car ils sont pensés pour s'intégrer dans un script. Il nous faudra donc utiliser une librairie de tests qui nous donnera un environnement complet pour bien débuter.

Découvrez les librairies de tests

Plusieurs librairies de tests existent, dont Unittest qui est la librairie par défaut de Python. Dans ce cours, nous utiliserons principalement Pytest, une autre librairie très appréciée.

Pytest vous permet d'écrire des tests extrêmement lisibles et intègre de nombreux outils qui vous rendront la vie plus facile. Nous les verrons dans le chapitre suivant !

En résumé

  • Les doctests se trouvent dans les docstrings et complètent la documentation d’une fonction.

  • Les doctests permettent de documenter et vérifier le comportement d’une fonction.

  • Il existe deux frameworks de tests, Unittest et Pytest.

Vous avez vu les doctests et vous avez découvert l'existence des frameworks de tests. Il est maintenant l’heure d’aller ajouter vos premiers tests dans le projet ! 

Exemple de certificat de réussite
Exemple de certificat de réussite