Junior — Middle
Poți explica ce înseamnă conceptul de Scope în contextul PyTest și cum influențează executarea testelor?
sobes.tech AI
Răspuns de la AI
În PyTest, parametrul scope determină domeniul de viață (ciclul de viață) al fixture-ului — adică, cât timp va fi creat și utilizat în teste.
Valorile principale ale scope-ului sunt:
- function (implicit): fixture-ul este recreat pentru fiecare test.
- class: fixture-ul este creat o dată pentru fiecare clasă de teste.
- module: fixture-ul este creat o dată pentru fiecare modul (fișier de teste).
- package: fixture-ul este creat o dată pentru fiecare pachet.
- session: fixture-ul este creat o dată pentru întreaga sesiune de teste.
De exemplu, dacă fixture-ul are scope="module", acesta este inițializat o dată înainte de rularea tuturor testelor din modul și distrus după ce acestea se finalizează. Acest lucru economisește timp și resurse, mai ales dacă fixture-ul creează, de exemplu, o conexiune la o bază de date sau un server.
Exemplu de fixture cu scope:
import pytest
@pytest.fixture(scope="module")
def db_connection():
conn = create_connection()
yield conn
conn.close()
Astfel, scope-ul influențează performanța și izolarea testelor, permițând controlul asupra frecvenței cu care sunt create și distruse resursele.