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é.