Sobes.tech
Junior — Middle

Kas saaksite selgitada, mida tähendab Scope mõiste PyTest kontekstis ja kuidas see mõjutab testide täitmist?

sobes.tech AI

Vastus AI-lt

PyTest parameeter scope määrab fikstu eluea (elue tsükli) — see tähendab, kui kaua see luuakse ja kasutatakse testides.

Peamised scope väärtused on:

  • function (vaikimisi): fikstuur luuakse uuesti iga testi jaoks.
  • class: fikstuur luuakse üks kord iga testklassi jaoks.
  • module: fikstuur luuakse üks kord iga mooduli (testfaili) jaoks.
  • package: fikstuur luuakse üks kord iga paketi jaoks.
  • session: fikstuur luuakse üks kord kogu testisessiooni jooksul.

Näiteks, kui fikstuuril on scope="module", siis see initsialiseeritakse üks kord enne kõigi testide käivitamist moodulis ja hävitatakse pärast nende lõpetamist. See aitab säästa aega ja ressursse, eriti kui fikstuur loob näiteks ühenduse andmebaasi või serveriga.

Scope näide:

import pytest

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

Nii mõjutab scope testide jõudlust ja isolatsiooni, võimaldades kontrollida, kui sageli ressursid luuakse ja hävitatakse.