Junior — Middle
Puoi spiegare cosa significa il concetto di Scope nel contesto di PyTest e come influisce sull'esecuzione dei test?
sobes.tech AI
Risposta dell'AI
In PyTest, il parametro scope definisce l'ambito di vita (ciclo di vita) della fixture, ovvero per quanto tempo essa verrà creata e utilizzata nei test.
I valori principali di scope sono:
- function (predefinito): la fixture viene ricreata per ogni test.
- class: la fixture viene creata una volta per ogni classe di test.
- module: la fixture viene creata una volta per ogni modulo (file di test).
- package: la fixture viene creata una volta per ogni pacchetto.
- session: la fixture viene creata una volta per tutta la sessione di test.
Ad esempio, se la fixture ha scope="module", viene inizializzata una volta prima di eseguire tutti i test nel modulo e distrutta dopo. Questo permette di risparmiare tempo e risorse, specialmente se la fixture crea, ad esempio, una connessione a un database o a un server.
Esempio di fixture con scope:
import pytest
@pytest.fixture(scope="module")
def db_connection():
conn = create_connection()
yield conn
conn.close()
In questo modo, lo scope influisce sulle prestazioni e sull'isolamento dei test, permettendo di controllare con quale frequenza vengono creati e distrutti le risorse.