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