Condividi tramite


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

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto e scegliere Proprietà.

  2. 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 esempio test*.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 esempio test_*.py.

  3. 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.

  1. Aprire il codice Python esistente usando l'opzione Apri una cartella locale:

    Screenshot che mostra come selezionare l'opzione Apri una cartella locale all'avvio di Visual Studio 2022.

    Screenshot che mostra come selezionare l'opzione Apri una cartella locale all'avvio di Visual Studio.

  2. 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:

    Screenshot che mostra come visualizzare cartelle e file nascosti in Esplora soluzioni in Visual Studio 2022.

    Screenshot che mostra come visualizzare cartelle e file nascosti in Esplora soluzioni in Visual Studio.

  3. 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:

    1. Fare clic con il pulsante destro del mouse sulla cartella Impostazioni locale e scegliere Aggiungi>nuovo file.

    2. Assegnare al file il nome Python Impostazioni.json e selezionare Invio per salvare le modifiche.

    Visual Studio apre automaticamente il nuovo file nell'editor.

  4. 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 e UnitTestPattern nel file Python Impostazioni.json, Visual Studio aggiunge automaticamente questi campi con i valori predefiniti rispettivamente di . e test*.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.

  5. 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"]
    
  6. 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:

  1. Aprire un progetto Python in Visual Studio.

  2. Impostare le proprietà del framework di test per il progetto, come descritto in Selezionare il framework di test per il progetto Python.

  3. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Aggiungi>nuovo elemento.

    1. Nella finestra di dialogo Aggiungi nuovo elemento selezionare il tipo di file unit test Python.

    2. Immettere un nome file che soddisfi la definizione del modello specificata per le proprietà del progetto.

    3. Selezionare Aggiungi.

  4. 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 dal unittest.TestCase metodo . Quando si esegue direttamente lo script, questo codice richiama anche la unittest.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:

    Screenshot che mostra la visualizzazione predefinita per un test in Esplora test in Visual Studio 2022.

    Screenshot che mostra la visualizzazione predefinita per un test in Esplora test.

  • Organizzare la visualizzazione dei test usando l'opzione Raggruppa per sulla barra degli strumenti:

    Screenshot che mostra come organizzare la visualizzazione dei test in Esplora test con l'opzione Raggruppa per in Visual Studio 2022.

    Screenshot che mostra come organizzare la visualizzazione dei test in Esplora test con l'opzione Raggruppa per.

  • Filtrare i test in base al nome immettendo testo nel campo Ricerca :

    Screenshot che mostra come filtrare la visualizzazione dei test in Esplora test usando il campo Cerca.

    Screenshot che mostra come filtrare la visualizzazione dei test in Esplora test usando il campo Cerca.

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

    Screenshot che mostra lo stato di un test superato in Esplora test in Visual Studio 2022.

    Screenshot che mostra lo stato di un test superato in Esplora 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:

    Screenshot che mostra lo stato e i dettagli del motivo per un test non riuscito in Esplora test in Visual Studio 2022.

    Screenshot che mostra lo stato di un test non riuscito in Esplora test.

    Screenshot che mostra il motivo di un test non riuscito in Esplora 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.

    Screenshot che mostra come eseguire il debug di uno unit test con il debugger di Visual Studio 2022.

    Screenshot che mostra come eseguire il debug di uno unit test con il debugger di Visual Studio.

  • 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.