Junior — Middle
Ar galite paaiškinti, ką reiškia Scope sąvoka PyTest kontekste ir kaip ji veikia testų vykdymą?
sobes.tech AI
Atsakymas iš AI
PyTest parametras scope nustato fixture gyvenimo sritį (gyvenimo ciklą) — tai, kiek laiko ji bus kuriama ir naudojama testuose.
Pagrindinės scope reikšmės:
- function (numatyta): fixture yra kuriama iš naujo kiekvienam testui.
- class: fixture yra kuriama vieną kartą kiekvienai testų klasei.
- module: fixture yra kuriama vieną kartą kiekvienam moduliui (testų failui).
- package: fixture yra kuriama vieną kartą kiekvienam paketui.
- session: fixture yra kuriama vieną kartą visai testų sesijai.
Pavyzdžiui, jei fixture scope="module", ji inicijuojama vieną kartą prieš vykdant visus testus modulyje ir sunaikinama po jų pabaigos. Tai padeda taupyti laiką ir išteklius, ypač jei fixture sukuria, pavyzdžiui, duomenų bazės jungtį ar serverį.
Scope pavyzdys:
import pytest
@pytest.fixture(scope="module")
def db_connection():
conn = create_connection()
yield conn
conn.close()
Taip scope veikia testų našumą ir izoliaciją, leidžiant kontroliuoti, kaip dažnai kuriami ir sunaikinami ištekliai.