Partager via


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

Les tests unitaires sont des éléments de code qui testent d’autres unités de code dans une application, généralement des fonctions isolées, des classes, et ainsi de suite. Lorsqu’une application réussit tous ses tests unitaires, vous pouvez être certain qu’au moins la fonctionnalité de programme de bas niveau est correcte.

Python utilise des tests unitaires largement pour valider les 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 contexte de votre processus de développement, sans avoir à exécuter de tests séparément.

Cet article fournit un bref aperçu des fonctionnalités de test unitaire dans Visual Studio avec Python. Pour plus d’informations sur les tests unitaires en général, consultez Test unitaire de votre code.

Prerequisites

Visual Studio pour Mac n’est pas pris en charge. Visual Studio Code sur Windows, Mac et Linux fonctionne bien avec Python via des extensions disponibles.

Sélectionner une infrastructure de test pour un projet Python

Visual Studio prend en charge deux frameworks de test pour Python, unittest et pytest (disponible dans Visual Studio 2019 version 16.3 et ultérieures). 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, cliquez avec le bouton droit sur le nom du projet, puis 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 affecte 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 de nom de fichier de test, 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 standard .ini . 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.

    Note

    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 test_*.pyexemple .

  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.

Configurer 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 :

  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 tous les autres fichiers et dossiers masqués, tels que le dossier .git ) dans l’Explorateur de solutions, sélectionnez l’option Afficher tous les fichiers :

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

    Note

    La plupart des configurations affichent deux fichiers de paramètres : PythonSettings.json et ProjectSettings.json. Pour cet exercice, vous devez modifier le fichier PythonSettings.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 sur le dossier Paramètres locaux , puis sélectionnez Ajouter>un nouveau fichier.

    2. Nommez le fichier PythonSettings.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 le 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 PythonSettings.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 SearchPaths paramètre dans le fichier PythonSettings.json :

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

Après avoir configuré le cadre, Visual Studio lance la détection des tests pour le cadre spécifié. 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 unitaires et pytest en tant que 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 Select test framework for Python project.

  3. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis sélectionnez Ajouter>un nouvel élément.

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

    2. Entrez 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 standard unittest et dérive une classe de test de la unittest.TestCase méthode. Lorsque vous exécutez le script directement, ce code appelle également la unittest.main() fonction.

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

Afficher 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électionnantl’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 :

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

  • Filtrez les tests par nom en entrant du texte dans le 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 unittest module 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 des tests de plusieurs façons :

  • Sélectionnez Exécuter tout (tests en mode) pour exécuter tous les tests affichés dans l’affichage actuel en fonction de vos paramètres de filtre.
  • Utilisez des commandes dans le menu Exécuter pour exécuter des tests ayant échoué, réussi ou non en tant que groupe.
  • Sélectionnez un ou plusieurs tests, puis cliquez avec le bouton droit 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 à mesure qu’il se termine :

  • Le passage de tests montre une graduation verte et le temps nécessaire pour terminer l’exécution du test :

  • Les tests ayant échoué montrent un X rouge avec un lien Sortie qui affiche la sortie de la console et unittest la sortie de l’exécution de test :

Vérifiez les tests avec le débogueur

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

Passez en revue ces points sur la vérification de vos tests avec le débogueur 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é sousOptions>d’outils>Débogage>.

  • Pour démarrer le débogage, définissez un point d’arrêt initial dans votre code, puis 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 le code de l’application.

  • Si vous préférez, vous pouvez utiliser 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é.