Sobes.tech
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.