Sobes.tech
Junior — Middle

Môžete vysvetliť, čo znamená pojem Scope v kontexte PyTest a ako ovplyvňuje vykonávanie testov?

sobes.tech AI

Odpoveď od AI

V PyTest parametri scope určuje oblasť života (životný cyklus) fixture — teda, ako dlho bude vytváraná a používaná v testoch.

Hlavné hodnoty scope sú:

  • function (predvolené): fixture sa znovu vytvára pre každý test.
  • class: fixture sa vytvorí raz pre každú triedu testov.
  • module: fixture sa vytvorí raz pre každý modul (testovací súbor).
  • package: fixture sa vytvorí raz pre každý balík.
  • session: fixture sa vytvorí raz pre celú testovaciu reláciu.

Napríklad, ak má fixture scope="module", je inicializovaná raz pred spustením všetkých testov v module a zničená po ich dokončení. To pomáha šetriť čas a zdroje, najmä ak fixture vytvára napríklad spojenie s databázou alebo serverom.

Príklad fixture so scope:

import pytest

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

Týmto spôsobom scope ovplyvňuje výkon a izoláciu testov, umožňuje riadiť, ako často sú zdroje vytvárané a ničené.