Einrichten von Komponententests für Python-Code

Komponententests sind Codeelemente, die andere Codeeinheiten in einer Anwendung testen, in der Regel isolierte Funktionen, Klassen usw. Wenn eine Anwendung alle Unittests besteht, können Sie sich zumindest darauf verlassen, dass die Funktionalität im Detail korrekt ist.

In Python werden Komponententests ausgiebig zum Überprüfen von Szenarien beim Entwurf eines Programms verwendet. Die Python-Unterstützung in Visual Studio umfasst das Ermitteln, Ausführen und Debuggen von Unittests im Kontext Ihres Entwicklungsprozesses, sodass sie nicht separat ausgeführt werden müssen.

Dieser Artikel enthält eine kurze Übersicht über die Komponententestfunktionen in Visual Studio mit Python. Weitere Informationen zu Komponententests im Allgemeinen finden Sie unter Komponententest für Code.

Auswählen des Testframeworks für ein Python-Projekt

Visual Studio unterstützt zwei Testframeworks für Python: unittest und pytest (ab Visual Studio 2019, Version 16.3, verfügbar). Standardmäßig ist kein Framework ausgewählt, wenn Sie ein Python-Projekt erstellen. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, und wählen Sie die Option Eigenschaften aus, um ein Framework festzulegen. Diese Aktion öffnet den Projekt-Designer, in dem Sie Tests auf der Registerkarte Test konfigurieren können. Auf dieser Registerkarte können Sie das Testframework auswählen, das Sie für Ihr Projekt verwenden möchten.

  • Für das UnitTest-Framework wird das Stammverzeichnis des Projekts für die Testermittlung verwendet. Dieser Speicherort sowie das Textmuster zur Identifizierung von Tests können auf der Registerkarte Test auf benutzerdefinierte Werte geändert werden.
  • Für das pytest-Framework werden Testoptionen wie „Testspeicherort“ und „Dateinamenmuster“ mithilfe der INI-Standardkonfigurationsdatei von pytest festgelegt. Weitere Informationen finden Sie in der pytest-Referenzdokumentation.

Nachdem Sie Ihre Framework-Auswahl und Ihre Einstellungen gespeichert haben, wird die Testermittlung im Test-Explorer gestartet. Wenn das Fenster „Test-Explorer“ noch nicht geöffnet ist, navigieren Sie zur Symbolleiste, und klicken Sie auf Test>Test-Explorer.

Konfigurieren von Tests für Python ohne ein Projekt

Mit Visual Studio können Sie vorhandenen Python-Code ohne ein Projekt ausführen und testen, indem Sie einen Ordner mit Python-Code öffnen. Unter diesen Umständen müssen Sie eine PythonSettings.json-Datei zum Konfigurieren der Tests verwenden.

  1. Öffnen Sie Ihren vorhandenen Python-Code mithilfe der Option Lokalen Ordner öffnen.

    Visual Studio-Startbildschirm

  2. Klicken Sie im Fenster „Projektmappen-Explorer“ auf Alle Dateien anzeigen, um alle Dateien im aktuellen Ordner anzuzeigen.

    Schaltfläche „Alle Dateien anzeigen“

  3. Navigieren Sie im Ordner Lokale Einstellungen zur Datei PythonSettings.json. Wenn Sie diese Datei nicht im Ordner Lokale Einstellungen finden können, erstellen Sie sie manuell.

  4. Fügen Sie das Feld TestFramework zur Einstellungsdatei hinzu, und legen Sie sie, je nachdem, welches Testframework Sie verwenden möchten, auf pytest oder UnitTest fest.

    {
      "TestFramework": "unittest",
      "UnitTestRootDirectory": "testing",
      "UnitTestPattern": "test_*.py"
    }
    

    Hinweis

    Wenn die Felder UnitTestRootDirectory und UnitTestPattern beim UnitTest-Framework nicht in der Datei „PythonSettings.json“ angegeben sind, werden sie jeweils mit den Standardwerten „.“ und „test*.py“ hinzugefügt.

  5. Wenn Ihr Ordner ein src-Verzeichnis enthält, das von dem Ordner getrennt ist, der Ihre Tests enthält, legen Sie den Pfad zum src-Ordner mithilfe des Felds SearchPaths in Ihrer PythonSettings.json-Datei fest.

    {
      "TestFramework": "unittest",
      "UnitTestRootDirectory": "testing",
      "UnitTestPattern": "test_*.py",
      "SearchPaths": [".\\src"]
    }
    
  6. Speichern Sie Ihre Änderungen an der Datei „PythonSettings.json“, die die Testermittlung für das angegebene Framework einleitet.

    Hinweis

    Wenn das Fenster „Test-Explorer“ bereits geöffnet ist, können Sie die Ermittlung auch mit STRG + R,A auslösen.

Entdecken und Anzeigen von Tests

Visual Studio identifiziert Tests von UnitTest und pytest als Methoden, deren Namen mit test beginnen. Führen Sie die folgenden Schritte aus, um die Testermittlung zu sehen:

  1. Öffnen Sie ein Python-Projekt.

  2. Klicken Sie, sobald das Projekt in Visual Studio geladen wurde, mit der rechten Maustaste auf Ihr Projekt im Projektmappen-Explorer, und wählen Sie dann das Framework UnitTest oder pytest in den Eigenschaften auf der Registerkarte Test aus.

    Hinweis

    Wenn Sie das pytest-Framework verwenden, können Sie den Testspeicherort und die Dateinamenmuster mithilfe der INI-Standardkonfigurationsdatei von pytest festlegen. Standardmäßig wird der Arbeitsbereich-/Projektordner mit den Mustern test_*py und *_test.py verwendet. Weitere Informationen finden Sie in der pytest-Referenzdokumentation.

  3. Nachdem Sie das Framework ausgewählt haben, klicken Sie erneut mit der rechten Maustaste auf das Projekt, klicken Sie auf Hinzufügen>Neues Element, wählen Sie dann Python-Komponententest aus, und klicken Sie anschließend auf Hinzufügen.

  4. Hierdurch wird eine Datei test_1.py mit Code erstellt, der das unittest-Standardmodul importiert, eine Testklasse aus unittest.TestCase ableitet und unittest.main() aufruft, wenn Sie das Skript direkt ausführen:

    import unittest
    
    class Test_test1(unittest.TestCase):
        def test_A(self):
            self.fail("Not implemented")
    
    if __name__ == '__main__':
        unittest.main()
    
  5. Speichern Sie die Datei bei Bedarf, und öffnen Sie dann den Test-Explorer mit dem Menübefehl Test>Windows.

  6. Der Text-Explorer durchsucht Ihr Projekt nach Tests und zeigt diese wie in der folgenden Abbildung dargestellt an. Durch Doppelklicken auf einen Test wird dessen Quelldatei geöffnet.

    Test-Explorer mit Anzeige des Standardtests „test_A“

  7. Wenn Sie Ihrem Projekt weitere Tests hinzufügen, können Sie die Ansicht im Test-Explorer über das Menü Gruppieren nach auf der Symbolleiste organisieren:

    Symbolleistenmenü „Gruppieren nach“ im Test-Explorer

  8. Sie können auch Text in das Suchfeld eingeben, um Tests nach Namen zu filtern.

Weitere Informationen zum unittest-Modul und zum Schreiben von Tests finden Sie in der Python 3.10-Dokumentation.

Tests durchführen

Im Test-Explorer können Sie Tests auf verschiedene Weise ausführen:

  • Alle ausführen führt alle angezeigten Tests aus (gemäß Filter).
  • Das Menü Ausführen stellt Ihnen Befehle zum Ausführen fehlerhafter, erfolgreicher oder nicht ausgeführter Tests als Gruppe zur Verfügung.
  • Sie können einen oder mehrere Tests auswählen, mit der rechten Maustaste darauf klicken und Ausgewählte Tests ausführen wählen.

Tests im Hintergrund ausführen. Test-Explorer aktualisiert den Status der einzelnen Tests, sobald sie abgeschlossen sind:

  • Erfolgreiche Tests werden mit einem grünen Häkchen markiert, und die zum Ausführen des Tests erforderliche Zeit wird angezeigt:

    Status „Erfolgreich“ für test_A

  • Fehlerhafte Tests werden mit einem roten Kreuz markiert und mit einem Link Ausgabe versehen, unter dem die Konsolenausgabe und die unittest-Ausgabe aus dem Testlauf angezeigt wird:

    Status „Fehlerhaft“ für test_A

    Fehlerhafter test_A mit Grund

Debuggen von Tests

Da Unittests Codeteile sind, können sie genau wie jeder andere Code Fehler aufweisen und müssen gelegentlich in einem Debugger ausgeführt werden. Im Debugger können Sie Haltepunkte setzen, Variablen untersuchen und Code durchlaufen. Visual Studio bietet auch Diagnosetools für Unittests.

Hinweis

Standardmäßig werden für das Testdebuggen die Debugger ptvsd 4 für Visual Studio 2017 (ab Version 15.8) und debugpy für Visual Studio 2019 (ab Version 16.5) verwendet. Wenn Sie stattdessen „PTVSD 3“ verwenden möchten, können Sie die Option Legacydebugger verwenden unter Extras>Optionen>Python>Debuggen aktivieren.

Um mit dem Debuggen zu beginnen, legen Sie einen anfänglichen Haltepunkt im Code fest, klicken Sie im Test-Explorer mit der rechten Maustaste auf den Test (oder eine Auswahl), und wählen Sie Ausgewählte Tests debuggen aus. Visual Studio startet den Python-Debugger auf dieselbe Weise wie für Anwendungscode.

Debuggen eines Tests

Sie können auch Code Coverage für ausgewählte Tests analysieren verwenden. Weitere Informationen finden Sie unter Bestimmen des Umfangs des zu testenden Codes mithilfe von Code Coverage.