Scrivere unit test per Python con Esplora test in Visual Studio
Gli unit test sono parti di codice che testano altre unità di codice in un'applicazione, in genere funzioni isolate, classi e così via. Quando un'applicazione supera tutti gli unit test, è possibile assicurarsi che almeno la funzionalità del programma di basso livello sia corretta.
In Python gli unit test vengono usati frequentemente per convalidare gli scenari durante la progettazione di un programma. Il supporto di Python in Visual Studio include l'individuazione, l'esecuzione e il debug di unit test direttamente all'interno del contesto del processo di sviluppo, senza la necessità di eseguire i test separatamente.
Questo articolo illustra brevemente le funzionalità di testing unità in Visual Studio con Python. Per altre informazioni di carattere generale sull'esecuzione di unit test, vedere Eseguire unit test del codice.
Prerequisiti
Visual Studio in Windows installato con il supporto per i carichi di lavoro Python. Per altre informazioni, vedere Installare il supporto python in Visual Studio.
Un progetto Python con codice o una cartella con codice Python.
Visual Studio per Mac non è supportato. Per altre informazioni, vedere What's happening to Visual Studio per Mac? Visual Studio Code in Windows, Mac e Linux funziona bene con Python tramite le estensioni disponibili.
Selezionare il framework di test per un progetto Python
Visual Studio supporta due framework di test per Python, unittest e pytest (disponibile in Visual Studio 2019 versione 16.3 e successive). Per impostazione predefinita, non viene selezionato alcun framework quando si crea un progetto Python.
Seguire questa procedura per selezionare il framework di test per il progetto Python:
In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto e scegliere Proprietà.
Nel riquadro Proprietà progetto selezionare la scheda Test e scegliere il tipo di framework di test:
Per il framework unittest, Visual Studio assegna la directory radice del progetto per l'individuazione dei test. Il valore predefinito è
.
, ma è possibile specificare un percorso diverso quando si configurano le impostazioni del progetto. È anche possibile specificare una o più stringhe per il modello di nome file di test, ad esempiotest*.py, test_*.py
.Per il framework pytest , le opzioni di test come il percorso di test e i modelli di nome file vengono specificati usando il file di configurazione pytest standard .ini . Per impostazione predefinita, la cartella area di lavoro/progetto viene usata per il percorso. Il modello di nome file predefinito include
test_*py
e*_test.py
. Per altre informazioni, vedere la documentazione di riferimento di pytest.
Nota
Quando si definisce il modello di nome file, tenere presente che i caratteri speciali come il carattere di sottolineatura (
_
) non corrispondono al carattere jolly (*
). Se si desidera utilizzare caratteri speciali nel nome file, specificare questi caratteri nella definizione del modello, ad esempiotest_*.py
.Per salvare la selezione e le impostazioni del framework, è possibile usare i tasti di scelta rapida CTRL+S.
Dopo aver configurato il framework, Visual Studio avvia l'individuazione dei test e apre Esplora test.
Configurare i test per Python senza un progetto
Visual Studio consente di eseguire e testare il codice Python esistente senza un progetto aprendo una cartella con codice Python. In questo scenario è necessario usare un file Python Impostazioni.json per configurare i test.
Aprire il codice Python esistente usando l'opzione Apri una cartella locale:
Quando si apre una cartella Python, Visual Studio crea diverse cartelle nascoste per gestire le impostazioni correlate al programma. Per visualizzare queste cartelle (e qualsiasi altro file e cartelle nascosti, ad esempio la cartella .git) in Esplora soluzioni, selezionare l'opzione Mostra tutti i file:
In Esplora soluzioni espandere la cartella Impostazioni locale e fare doppio clic sul file Python Impostazioni.json per aprire il file nell'editor.
Nota
La maggior parte delle configurazioni mostra due file di impostazioni: Python Impostazioni.json e Project Impostazioni.json. Per questo esercizio è necessario modificare il file Python Impostazioni.json.
Se il file Python Impostazioni.json non viene visualizzato nella cartella Impostazioni locale, è possibile crearlo manualmente:
Fare clic con il pulsante destro del mouse sulla cartella Impostazioni locale e scegliere Aggiungi>nuovo file.
Assegnare al file il nome Python Impostazioni.json e selezionare Invio per salvare le modifiche.
Visual Studio apre automaticamente il nuovo file nell'editor.
Nel file Python Impostazioni.json aggiungere il codice seguente per definire .
TestFramework
Impostare il valore del framework su pytest o unittest a seconda del framework di test desiderato:{ "TestFramework": "unittest", "UnitTestRootDirectory": "testing", "UnitTestPattern": "test_*.py" }
Per il framework unittest, se non si definiscono valori specifici per le
UnitTestRootDirectory
impostazioni eUnitTestPattern
nel file Python Impostazioni.json, Visual Studio aggiunge automaticamente questi campi con i valori predefiniti rispettivamente di.
etest*.py
.Per il framework pytest, le opzioni di configurazione vengono sempre specificate nel file di configurazione pytest .ini anziché tramite le impostazioni di Visual Studio.
Se il programma Python contiene una cartella src separata dalla cartella contenente i test, specificare il percorso della cartella src con l'impostazione
SearchPaths
nel file Python Impostazioni.json:"SearchPaths": [".\\src"]
Salvare le modifiche apportate al file Python Impostazioni.json.
Dopo aver configurato il framework, Visual Studio avvia l'individuazione dei test per il framework specificato. È possibile accedere al test in Esplora test.
Aggiungere e individuare i test
Per impostazione predefinita, Visual Studio identifica unittest e pytest test come metodi i cui nomi iniziano con test
.
Per informazioni su come Visual Studio avvia l'individuazione dei test, seguire questa procedura:
Aprire un progetto Python in Visual Studio.
Impostare le proprietà del framework di test per il progetto, come descritto in Selezionare il framework di test per il progetto Python.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Aggiungi>nuovo elemento.
Nella finestra di dialogo Aggiungi nuovo elemento selezionare il tipo di file unit test Python.
Immettere un nome file che soddisfi la definizione del modello specificata per le proprietà del progetto.
Selezionare Aggiungi.
Visual Studio crea il file di test con il codice predefinito:
import unittest class Test_test1(unittest.TestCase): def test_A(self): self.fail("Not implemented") if __name__ == '__main__': unittest.main()
Questo codice importa il modulo standard
unittest
e deriva una classe di test dalunittest.TestCase
metodo . Quando si esegue direttamente lo script, questo codice richiama anche launittest.main()
funzione .
Quando si aggiungono nuovi file di test, Visual Studio li rende disponibili in Esplora test.
Visualizzare i test con Esplora test
Dopo aver configurato il framework di test e i file di test, Visual Studio cerca i test e li visualizza in Esplora test.
Ecco alcuni dei modi in cui è possibile usare Esplora test:
Aprire la finestra Esplora test selezionando Esplora test>.
Quando la finestra Esplora test è aperta, usare i tasti di scelta rapida CTRL+R, A per attivare l'individuazione dei test.
Fare doppio clic su un test in Esplora test per aprire il file di origine corrispondente nell'editor:
Organizzare la visualizzazione dei test usando l'opzione Raggruppa per sulla barra degli strumenti:
Filtrare i test in base al nome immettendo testo nel campo Ricerca :
Eseguire test e visualizzare lo stato dell'esecuzione del test, come descritto nella sezione successiva.
Per altre informazioni sul modulo e sulla unittest
scrittura di test, vedere la documentazione di Python.
Eseguire unit test con Esplora test
In Esplora test è possibile eseguire test in diversi modi:
- Selezionare Esegui tutti (test visualizzati) per eseguire tutti i test visualizzati nella visualizzazione corrente in base alle impostazioni del filtro.
- Usare i comandi del menu Esegui per eseguire test non riusciti, superati o non eseguiti come gruppo.
- Selezionare uno o più test, quindi fare clic con il pulsante destro del mouse e selezionare l'opzione Esegui test selezionati.
Visual Studio esegue i test in background. Esplora test aggiorna lo stato per ogni test al termine:
Il superamento dei test mostra un segno di graduazione verde e il tempo necessario per completare l'esecuzione del test:
I test non superati mostrano una X rossa con un collegamento Output che mostra l'output e
unittest
l'output della console dall'esecuzione del test:
Controllare i test con il debugger
Gli unit test sono parti di codice soggette a bug come qualsiasi altro codice e occasionalmente devono essere eseguiti in un debugger. Nel debugger di Visual Studio è possibile impostare punti di interruzione, esaminare le variabili ed eseguire il codice. Visual Studio include anche strumenti di diagnostica per gli unit test.
Esaminare questi punti sulla verifica dei test con il debugger di Visual Studio:
Per impostazione predefinita, il debug di test usa il debugger debugpy per Visual Studio 2019 versione 16.5 e successive. Alcune versioni precedenti di Visual Studio usano il debugger ptvsd 4 . Se si usa una versione precedente di Visual Studio e si preferisce il debugger ptvsd 3, selezionare l'opzione Usa debugger legacy in Strumenti>Opzioni>debug Python.>
Per avviare il debug, impostare un punto di interruzione iniziale nel codice, fare clic con il pulsante destro del mouse sul test (o su una selezione) in Esplora test e quindi scegliere Esegui debug test selezionati. Visual Studio avvia il debugger di Python come farebbe per il codice dell'applicazione.
Se si preferisce, è possibile usare Analizza code coverage per i test selezionati. Per altre informazioni, vedere Usare la funzionalità code coverage per determinare la quantità di codice testato.