Écrire des tests unitaires pour Python avec l’Explorateur de tests dans Visual Studio

Les tests unitaires sont des éléments de code qui permettent de tester d’autres unités de code dans une application, généralement des fonctions isolées, des classes, etc. Quand une application réussit tous ses tests unitaires, vous avez au moins la garantie que ses fonctionnalités secondaires sont correctes.

Python utilise largement les tests unitaires pour valider des scénarios lors de la conception d’un programme. La prise en charge de Python dans Visual Studio inclut la découverte, l’exécution et le débogage de tests unitaires dans le cadre de votre processus de développement, sans qu’il soit nécessaire d’exécuter les tests séparément.

Cet article fournit une brève description des fonctionnalités de tests unitaires contenues dans Visual Studio avec Python. Pour plus d’informations sur les tests unitaires en général, consultez la page Tests unitaires sur votre code.

Prérequis

Visual Studio pour Mac n'est pas pris en charge. Pour plus d’informations, veuillez consulter la rubrique Qu’advient-il de Visual Studio pour Mac ? Visual Studio Code sur Windows, Mac et Linux fonctionne bien avec Python grâce aux extensions disponibles.

Sélectionnez le cadre de test pour un projet Python

Visual Studio prend en charge deux infrastructures de test pour Python, unittest et pytest (disponibles dans Visual Studio 2019 version 16.3 et suivantes). Par défaut, aucune infrastructure n’est sélectionnée lorsque vous créez un projet Python.

Procédez comme suit pour sélectionner l’infrastructure de test pour votre projet Python :

  1. Dans l’Explorateur de solutions, faites un clic droit sur le nom du projet et sélectionnez Propriétés.

  2. Dans le volet Propriétés du projet, sélectionnez l’onglet Test et choisissez votre type d’infrastructure de test :

    • Pour l’infrastructure unittest, Visual Studio attribue le répertoire racine du projet pour la découverte de tests. La valeur par défaut est ., mais vous pouvez spécifier un autre emplacement lorsque vous configurez les paramètres du projet. Vous pouvez également spécifier une ou plusieurs chaînes pour le modèle du nom du fichier de test, comme par exemple test*.py, test_*.py.

    • Pour l’infrastructure pytest, les options de test telles que l’emplacement de test et les modèles de nom de fichier sont spécifiées à l’aide du fichier de configuration pytest .ini standard. Par défaut, le dossier espace de travail/projet est utilisé pour l’emplacement. Le modèle de nom de fichier par défaut inclut test_*py et *_test.py. Pour plus d'informations, consultez la documentation de référence pytest.

    Remarque

    Lorsque vous définissez le modèle de nom de fichier, gardez à l’esprit que les caractères spéciaux comme le trait de soulignement (_) ne sont pas mis en correspondance par le caractère générique (*). Si vous souhaitez utiliser des caractères spéciaux dans le nom de fichier, spécifiez ces caractères dans la définition de modèle, par exemple test_*.py.

  3. Pour enregistrer la sélection et les paramètres de votre infrastructure, vous pouvez utiliser le raccourci clavier Ctrl+S.

Après avoir configuré l’infrastructure, Visual Studio lance la découverte de test et ouvre l’Explorateur de tests.

Configurez des tests pour Python sans projet

Visual Studio vous permet d’exécuter et de tester du code Python existant sans projet, en ouvrant un dossier avec du code Python. Dans ce scénario, vous devez utiliser un fichier PythonSettings.json pour configurer les tests.

  1. Ouvrez votre code Python existant à l’aide de l’option Ouvrir un dossier local :

    Capture d'écran montrant comment sélectionner l'option Ouvrir un dossier local au démarrage de Visual Studio 2022.

    Capture d'écran montrant comment sélectionner l'option Ouvrir un dossier local au démarrage de Visual Studio.

  2. Lorsque vous ouvrez un dossier Python, Visual Studio crée plusieurs dossiers masqués pour gérer les paramètres liés au programme. Pour afficher ces dossiers (et tout autre fichier ou dossier caché, tel que le dossier .git) dans l’explorateur de solutions, sélectionnez l’option Afficher tous les fichiers :

    Capture d'écran montrant comment afficher les dossiers et fichiers masqués dans Explorateur de solutions dans Visual Studio 2022.

    Capture d'écran montrant comment afficher les dossiers et fichiers masqués dans Explorateur de solutions dans Visual Studio.

  3. Dans Explorateur de solutions, développez le dossier Paramètres locaux, puis double-cliquez sur le fichier Python Paramètres.json pour ouvrir le fichier dans l’éditeur.

    Remarque

    La plupart des configurations affichent deux fichiers de paramètres : Python Paramètres.json et Project Paramètres.json. Pour cet exercice, vous devez modifier le fichier Python Paramètres.json.

    Si vous ne voyez pas le fichier PythonSettings.json dans le dossier Paramètres locaux, vous pouvez le créer manuellement :

    1. Cliquez avec le bouton droit de la souris sur le dossier Paramètres locaux et sélectionnez Ajouter>un nouveau fichier.

    2. Nommez le fichier Python Paramètres.json, puis sélectionnez Entrée pour enregistrer vos modifications.

    Visual Studio ouvre automatiquement le nouveau fichier dans l’éditeur.

  4. Dans le fichier PythonSettings.json, ajoutez le code suivant pour définir la TestFramework. Définissez la valeur de l’infrastructure sur pytest ou unittest en fonction de votre infrastructure de test souhaitée :

    {
      "TestFramework": "unittest",
      "UnitTestRootDirectory": "testing",
      "UnitTestPattern": "test_*.py"
    }
    
    • Pour l’infrastructure unittest, si vous ne définissez pas de valeurs spécifiques pour les paramètres UnitTestRootDirectory et UnitTestPattern dans le fichier Python Paramètres.json, Visual Studio ajoute automatiquement ces champs avec les valeurs par défaut . et test*.py, respectivement.

    • Pour l’infrastructure pytest, les options de configuration sont toujours spécifiées dans le fichier de configuration pytest .ini plutôt que via les paramètres Visual Studio.

  5. Si votre programme Python contient un dossier src distinct du dossier contenant vos tests, spécifiez le chemin d’accès au dossier src avec le paramètre SearchPaths dans le fichier Python Paramètres.json :

      "SearchPaths": [".\\src"]
    
  6. Enregistrez vos modifications dans le fichier PythonSettings.json.

Après avoir configuré l’infrastructure, Visual Studio lance la découverte de test pour l’infrastructure spécifiée. Vous pouvez accéder au test dans l’Explorateur de tests.

Ajouter et découvrir des tests

Par défaut, Visual Studio identifie les tests unittest et pytest comme des méthodes dont les noms commencent par test.

Pour voir comment Visual Studio lance la découverte de test, procédez comme suit :

  1. Ouvrez un projet Python dans Visual Studio.

  2. Définissez les propriétés de l’infrastructure de test pour le projet, comme décrit dans Sélectionner l’infrastructure de test pour le projet Python.

  3. Dans l’Explorateur de solutions, faites un clic droit sur le projet et sélectionnez Ajouter>Nouvel élément.

    1. Dans la boîte de dialogue Ajouter un nouvel élément, sélectionnez le type de fichier Test unitaire Python.

    2. Saisissez un nom de fichier qui répond à la définition de modèle que vous avez spécifiée pour les propriétés du projet.

    3. Sélectionnez Ajouter.

  4. Visual Studio crée le fichier de test avec le code par défaut :

    import unittest
    
    class Test_test1(unittest.TestCase):
        def test_A(self):
            self.fail("Not implemented")
    
    if __name__ == '__main__':
        unittest.main()
    

    Ce code importe le module unittest standard et dérive une classe de test de la méthode unittest.TestCase. Lorsque vous exécutez le script directement, ce code appelle également la fonction unittest.main().

Lorsque vous ajoutez de nouveaux fichiers de test, Visual Studio les rend disponibles dans l’Explorateur de tests.

Visualiser les tests avec l’Explorateur de tests

Après avoir configuré votre infrastructure de test et vos fichiers de test, Visual Studio recherche des tests et les affiche dans l’Explorateur de tests.

Voici quelques-unes des façons dont vous pouvez utiliser l’Explorateur de tests :

  • Ouvrez la fenêtre Explorateur de tests en sélectionnant Test>Explorateur de tests.

  • Lorsque la fenêtre Explorateur de tests est ouverte, utilisez le raccourci clavier CTRL+R, A pour déclencher la découverte de test.

  • Double-cliquez sur un test dans l’Explorateur de tests pour ouvrir le fichier source correspondant dans l’éditeur :

    Capture d’écran montrant la vue par défaut d’un test dans l’Explorateur de tests de Visual Studio 2022.

    Capture d’écran montrant la vue par défaut d’un test dans l’Explorateur de tests.

  • Organisez l’affichage de vos tests à l’aide de l’option Grouper par dans la barre d’outils :

    Capture d’écran montrant comment organiser l’affichage des tests dans l’Explorateur de tests avec l’option « Grouper par » dans Visual Studio 2022.

    Capture d’écran montrant comment organiser l’affichage des tests dans l’Explorateur de tests à l’aide de l’option « Grouper par ».

  • Filtrez les tests par nom en saisissant du texte dans le champ Recherche :

    Capture d’écran montrant comment filtrer l’affichage des tests dans l’Explorateur de tests à l’aide du champ de recherche.

    Capture d’écran montrant comment filtrer l’affichage des tests dans l’Explorateur de tests à l’aide du champ de recherche.

  • Exécutez des tests et affichez l’état de l’exécution de test, comme décrit dans la section suivante.

Pour plus d’informations sur le module unittest et l’écriture de tests, consultez la documentation Python.

Exécuter des tests avec l’Explorateur de tests

Dans l’Explorateur de tests, vous pouvez exécuter les tests de plusieurs façons :

  • Sélectionnez Exécuter tout (tests affichés) pour exécuter tous les tests affichés dans la vue actuelle en fonction de vos paramètres de filtre.
  • Utilisez les commandes du menu Exécuter pour exécuter les tests échoués, réussis ou non exécutés en tant que groupe.
  • Sélectionnez un ou plusieurs tests, puis faites un clic droit de la souris et sélectionnez l’option Exécuter les tests sélectionnés.

Visual Studio exécute vos tests en arrière-plan. L’Explorateur de tests met à jour l’état de chaque test au fur et à mesure qu’il se termine :

  • Les tests réussis affichent une coche verte et le temps nécessaire à l’exécution du test :

    Capture d’écran montrant l’état d’un test réussi dans l’Explorateur de tests de Visual Studio 2022.

    Capture d’écran montrant l’état d’un test réussi dans l’Explorateur de tests.

  • Les tests ayant échoué sont indiqués par une X rouge accompagnée d’un lien Sortie qui affiche la sortie de la console ainsi que la sortie unittest de l’exécution du test :

    Capture d’écran montrant l’état d’un test ayant échoué et les détails de la raison pour laquelle il a échoué dans l’Explorateur de tests de Visual Studio 2022.

    Capture d’écran montrant l’état d’un test ayant échoué dans l’Explorateur de tests.

    Capture d’écran montrant la raison de l’échec d’un test dans l’Explorateur de tests.

Vérifier les tests avec le débogueur

Les tests unitaires sont des morceaux de code qui sont sujets à des bogues comme n’importe quel autre code et qui doivent parfois être exécutés dans un débogueur. Dans le débogueur de Visual Studio, vous pouvez définir des points d’arrêt, examiner les variables et parcourir le code. Visual Studio fournit également des outils de diagnostic pour les tests unitaires.

Passez en revue les points suivants concernant la vérification de vos tests à l’aide du débogueur de Visual Studio :

  • Par défaut, le débogage de test utilise le débogueur debugpy pour Visual Studio 2019 version 16.5 et ultérieure. Certaines versions antérieures de Visual Studio utilisent le débogueur ptvsd 4. Si vous utilisez une version antérieure de Visual Studio et préférez le débogueur ptvsd 3, sélectionnez l’option Utiliser le débogueur hérité sous Outils>Options>Python>Débogage.

  • Pour démarrer le débogage, définissez un point d’arrêt initial dans votre code, cliquez avec le bouton droit sur le test (ou une sélection) dans l’Explorateur de tests, puis sélectionnez Déboguer les tests sélectionnés. Visual Studio démarre le débogueur Python comme il le ferait pour un code d’application.

    Capture d’écran montrant comment déboguer un test unitaire avec le débogueur Visual Studio 2022.

    Capture d’écran montrant comment déboguer un test unitaire avec le débogueur Visual Studio.

  • Si vous préférez, vous pouvez utiliser l’option Analyser la couverture du code pour les tests sélectionnés. Pour plus d’informations, consultez Utiliser la couverture du code pour déterminer la quantité de code testé.