Sobes.tech
Junior — Middle

Можете ли објаснити шта значи појам Scope у контексту PyTest и како он утиче на извођење тестова?

sobes.tech АИ

Одговор од АИ

U PyTest-u, parametar scope određuje oblast života (životni ciklus) fixture-a — odnosno, koliko dugo će biti kreiran i korišćen u testovima.

Glavne vrednosti scope su:

  • function (podrazumevano): fixture se ponovo kreira za svaki test.
  • class: fixture se kreira jednom za svaku klasu testova.
  • module: fixture se kreira jednom za svaki modul (test fajl).
  • package: fixture se kreira jednom za svaki paket.
  • session: fixture se kreira jednom za celu sesiju testova.

Na primer, ako fixture ima scope="module", ona se inicijalizuje jednom pre pokretanja svih testova u modulu i uništava nakon njihovog završetka. Ovo pomaže u uštedi vremena i resursa, posebno ako fixture kreira, na primer, konekciju na bazu podataka ili server.

Primer fixture sa scope:

import pytest

@pytest.fixture(scope="module")
def db_connection():
    conn = create_connection()
    yield conn
    conn.close()

Na ovaj način, scope utiče na performanse i izolaciju testova, omogućavajući kontrolu koliko često se resursi kreiraju i uništavaju.