Junior — Middle
Můžete vysvětlit, co znamená pojem Scope v kontextu PyTest a jak ovlivňuje provádění testů?
sobes.tech AI
Odpověď od AI
V PyTest parametr scope určuje oblast života (životní cyklus) fixture — tedy, jak dlouho bude vytvářena a používána v testech.
Hlavní hodnoty scope jsou:
- function (výchozí): fixture je znovu vytvářena pro každý test.
- class: fixture je vytvořena jednou pro každou třídu testů.
- module: fixture je vytvořena jednou pro každý modul (testovací soubor).
- package: fixture je vytvořena jednou pro každý balíček.
- session: fixture je vytvořena jednou pro celou testovací relaci.
Například, pokud má fixture scope="module", je inicializována jednou před spuštěním všech testů v modulu a zničena po jejich dokončení. To pomáhá šetřit čas a zdroje, zejména pokud fixture vytváří například připojení k databázi nebo serveru.
Příklad fixture s scope:
import pytest
@pytest.fixture(scope="module")
def db_connection():
conn = create_connection()
yield conn
conn.close()
Tímto způsobem scope ovlivňuje výkon a izolaci testů, umožňuje řídit, jak často jsou zdroje vytvářeny a ničíny.