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.