Junior — Middle
El tudná magyarázni, hogy mit jelent a Scope fogalma a PyTest kontextusában, és hogyan befolyásolja a tesztek végrehajtását?
sobes.tech MI
Válasz az MI-től
A PyTest-ben a scope paraméter határozza meg a fixture életciklusát (élettartamát) — vagyis, hogy mennyi ideig lesz létrehozva és használva a tesztek során.
A fő scope értékek a következők:
- function (alapértelmezett): a fixture minden teszt esetén újra létrejön.
- class: a fixture minden tesztosztály esetén egyszer jön létre.
- module: a fixture minden modul (tesztfájl) esetén egyszer jön létre.
- package: a fixture minden csomag esetén egyszer jön létre.
- session: a fixture az egész tesztsorozat során egyszer jön létre.
Például, ha a fixture scope="module", akkor az egyszer inicializálódik, mielőtt az összes teszt futna a modulban, és a futtatás után megsemmisül. Ez időt és erőforrást takarít meg, különösen, ha a fixture például adatbázis-kapcsolatot vagy szervert hoz létre.
Példa fixture scope-al:
import pytest
@pytest.fixture(scope="module")
def db_connection():
conn = create_connection()
yield conn
conn.close()
Így a scope befolyásolja a tesztek teljesítményét és izolációját, lehetővé téve az erőforrások gyakoriságának szabályozását.