Share via


Eenheidstests schrijven voor Python met Test Explorer in Visual Studio

Eenheidstests zijn stukjes code waarmee andere code-eenheden in een toepassing worden getest, meestal geïsoleerde functies, klassen enzovoort. Wanneer een toepassing alle eenheidstests doorstaat, kunt u er zeker van zijn dat de functionaliteit van het programma op laag niveau juist is.

Python gebruikt moduletests uitgebreid om scenario's te valideren tijdens het ontwerpen van een programma. Python-ondersteuning in Visual Studio omvat het detecteren, uitvoeren en foutopsporing van eenheidstests binnen de context van uw ontwikkelproces, zonder dat u tests afzonderlijk hoeft uit te voeren.

Dit artikel bevat een kort overzicht van de mogelijkheden voor het testen van eenheden in Visual Studio met Python. Zie Eenheidstest uw code voor meer informatie over eenheidstests in het algemeen.

Vereiste voorwaarden

Visual Studio voor Mac wordt niet ondersteund. Zie Wat gebeurt er met Visual Studio voor Mac voor meer informatie? Visual Studio Code op Windows, Mac en Linux werkt goed met Python via beschikbare extensies.

Testframework voor een Python-project selecteren

Visual Studio ondersteunt twee testframeworks voor Python, unittest en pytest (beschikbaar in Visual Studio 2019 versie 16.3 en hoger). Standaard is er geen framework geselecteerd wanneer u een Python-project maakt.

Volg deze stappen om het testframework voor uw Python-project te selecteren:

  1. Klik in Solution Explorer met de rechtermuisknop op de projectnaam en selecteer Eigenschappen.

  2. Selecteer in het deelvenster Projecteigenschappen het tabblad Testen en kies het type Test-framework :

    • Voor het unittest-framework wijst Visual Studio de hoofdmap van het project toe voor testdetectie. De standaardwaarde is ., maar u kunt een andere locatie opgeven wanneer u de projectinstellingen configureert. U kunt ook een of meer tekenreeksen opgeven voor het patroon van de testbestandsnaam, zoals test*.py, test_*.py.

    • Voor het pytest-framework worden testopties zoals testlocatie- en bestandsnaampatronen opgegeven met behulp van het standaard pytest -.ini-configuratiebestand . De werkruimte/projectfolder wordt standaard gebruikt voor de locatie. Het standaardbestandspatroon bevat test_*py en *_test.py. Zie de pytest-referentiedocumentatie voor meer informatie.

    Opmerking

    Wanneer u het bestandsnaampatroon definieert, moet u er rekening mee houden dat speciale tekens zoals het onderstrepingsteken (_) niet overeenkomen met het jokerteken (*). Als u speciale tekens in de bestandsnaam wilt gebruiken, geeft u deze tekens op in de patroondefinitie, zoals test_*.py.

  3. Als u uw frameworkselectie en -instellingen wilt opslaan, kunt u de sneltoets Ctrl+S gebruiken.

Nadat u het framework hebt geconfigureerd, start Visual Studio de testdetectie en opent u Test Explorer.

Testen configureren voor Python zonder een project

Met Visual Studio kunt u bestaande Python-code zonder project uitvoeren en testen door een map met Python-code te openen. In dit scenario moet u een PythonSettings.json-bestand gebruiken om tests te configureren.

  1. Open uw bestaande Python-code met behulp van de optie Een lokale map openen:

  2. Wanneer u een Python-map opent, worden in Visual Studio verschillende verborgen mappen gemaakt om instellingen met betrekking tot het programma te beheren. Als u deze mappen (en andere verborgen bestanden en mappen, zoals de .git-map ) in Solution Explorer wilt zien, selecteert u de optie Alle bestanden weergeven :

  3. Vouw in Solution Explorer de map Lokale instellingen uit en dubbelklik op het PythonSettings.json bestand om het bestand in de editor te openen.

    Opmerking

    In de meeste configuraties worden twee instellingenbestanden weergegeven: PythonSettings.json en ProjectSettings.json. Voor deze oefening moet u het PythonSettings.json-bestand wijzigen.

    Als u het PythonSettings.json bestand niet ziet in de map Lokale instellingen , kunt u het handmatig maken:

    1. Klik met de rechtermuisknop op de map Lokale instellingen en selecteerNieuw bestand>.

    2. Geef het bestand een naam PythonSettings.jsonen selecteer Enter om de wijzigingen op te slaan.

    Visual Studio opent automatisch het nieuwe bestand in de editor.

  4. Voeg in het PythonSettings.json-bestand de volgende code toe om de TestFramework. Stel de frameworkwaarde in op pytest of unittest , afhankelijk van het gewenste testframework:

    {
      "TestFramework": "unittest",
      "UnitTestRootDirectory": "testing",
      "UnitTestPattern": "test_*.py"
    }
    
    • Als u voor het unittest-framework geen specifieke waarden definieert voor de UnitTestRootDirectory en UnitTestPattern instellingen in het PythonSettings.json-bestand , worden deze velden automatisch toegevoegd met respectievelijk de standaardwaarden van . en test*.py, .

    • Voor het pytest-framework worden configuratieopties altijd opgegeven in het pytest .ini configuratiebestand in plaats van via Visual Studio-instellingen.

  5. Als uw Python-programma een src-map bevat die gescheiden is van de map die uw tests bevat, geeft u het pad naar de src-map op met de SearchPaths instelling in het bestandPythonSettings.json :

      "SearchPaths": [".\\src"]
    
  6. Sla de wijzigingen op in het PythonSettings.json-bestand .

Nadat u het framework hebt geconfigureerd, start Visual Studio de testdetectie voor het opgegeven framework. U kunt de test openen in Test Explorer.

Tests toevoegen en detecteren

Visual Studio identificeert standaard unittest- en pytest-tests als methoden waarvan de namen beginnen met test.

Volg deze stappen om te zien hoe Visual Studio testdetectie start:

  1. Open een Python-project in Visual Studio.

  2. Stel de eigenschappen van het testframework voor het project in, zoals beschreven in testframework selecteren voor Python-project.

  3. Klik in Solution Explorer met de rechtermuisknop op het project en selecteerNieuw item>.

    1. Selecteer in het dialoogvenster Nieuw item toevoegen het bestandstype Python Unit Test .

    2. Voer een bestandsnaam in die voldoet aan de patroondefinitie die u hebt opgegeven voor de projecteigenschappen.

    3. Selecteer Toevoegen.

  4. Visual Studio maakt het testbestand met standaardcode:

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

    Met deze code wordt de standaardmodule unittest geïmporteerd en wordt een testklasse afgeleid van de unittest.TestCase methode. Wanneer u het script rechtstreeks uitvoert, roept deze code ook de unittest.main() functie aan.

Wanneer u nieuwe testbestanden toevoegt, maakt Visual Studio deze beschikbaar in Test Explorer.

Tests weergeven met Test Explorer

Nadat u uw testframework en testbestanden hebt geconfigureerd, zoekt Visual Studio naar tests en geeft deze weer in Test Explorer.

Hier volgen enkele manieren waarop u met Test Explorer kunt werken:

  • Open het venster Test Explorer door Test>Test Explorer te selecteren.

  • Wanneer het venster Testverkenner is geopend, gebruikt u de sneltoets CTRL+R, A om testdetectie te activeren.

  • Dubbelklik op een test in Test Explorer om het bijbehorende bronbestand in de editor te openen:

  • Organiseer de weergave van uw tests met behulp van de optie Groeperen op op de werkbalk.

  • Filter tests op naam door tekst in te voeren in het zoekveld :

  • Voer tests uit en bekijk de status voor de testuitvoering, zoals beschreven in de volgende sectie.

Zie de unittest voor meer informatie over de module en het schrijven van tests.

Tests uitvoeren met Test Explorer

In Test Explorer kunt u tests op verschillende manieren uitvoeren:

  • Selecteer Alles uitvoeren (tests in weergave) om alle tests uit te voeren die worden weergegeven in de huidige weergave op basis van uw filterinstellingen.
  • Gebruik opdrachten in het menu Uitvoeren om mislukte, geslaagde of niet uitgevoerde tests uit te voeren als groep.
  • Selecteer een of meer tests en klik met de rechtermuisknop en selecteer de optie Geselecteerde tests uitvoeren .

Visual Studio voert uw tests op de achtergrond uit. Test Explorer werkt de status voor elke test bij wanneer deze is voltooid:

  • Geslaagde tests tonen een groen vinkje en de tijd die nodig is om de testuitvoering te voltooien.

  • Mislukte tests tonen een rode X met een link naar de uitvoer dat de console-uitvoer en unittest-uitvoer van de testuitvoering toont:

Tests controleren met het foutopsporingsprogramma

Eenheidstests zijn stukjes code die onderhevig zijn aan bugs zoals elke andere code en af en toe moeten worden uitgevoerd in een foutopsporingsprogramma. In het Visual Studio Debugger kunt u onderbrekingspunten instellen, variabelen onderzoeken en code doorlopen. Visual Studio biedt ook diagnostische hulpprogramma's voor eenheidstests.

Bekijk deze punten over het controleren van uw tests met het Visual Studio Debugger:

  • Testopsporing maakt standaard gebruik van het foutopsporingsprogramma voor Visual Studio 2019 versie 16.5 en hoger. Sommige eerdere versies van Visual Studio gebruiken het ptvsd 4-foutopsporingsprogramma. Als u een eerdere versie van Visual Studio gebruikt en de voorkeur geeft aan het ptvsd 3-foutopsporingsprogramma, selecteert u de optie Verouderd foutopsporingsprogramma gebruiken onderHulpprogramma-opties>>voor>.

  • Als u foutopsporing wilt starten, stelt u een eerste onderbrekingspunt in uw code in en klikt u met de rechtermuisknop op de test (of een selectie) in Test Explorer en selecteert u Geselecteerde tests voor foutopsporing. Visual Studio start het Python-foutopsporingsprogramma zoals voor toepassingscode.

  • Als u wilt, kunt u de analysecodedekking voor geselecteerde tests gebruiken. Zie Codedekking gebruiken om te bepalen hoeveel code is getestvoor meer informatie.