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