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.
Öffnen Sie Ihren vorhandenen Python-Code mithilfe der Option Lokalen Ordner öffnen.
Klicken Sie im Fenster „Projektmappen-Explorer“ auf Alle Dateien anzeigen, um alle Dateien im aktuellen Ordner anzuzeigen.
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.
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.
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"] }
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:
Öffnen Sie ein Python-Projekt.
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.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.
Hierdurch wird eine Datei test_1.py mit Code erstellt, der das
unittest
-Standardmodul importiert, eine Testklasse ausunittest.TestCase
ableitet undunittest.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()
Speichern Sie die Datei bei Bedarf, und öffnen Sie dann den Test-Explorer mit dem Menübefehl Test>Windows.
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.
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:
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:
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:
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.
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.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für