Sobes.tech
Junior — Middle

PyTest kontekstində Scope anlayışının nə olduğunu və testlərin icrasına necə təsir etdiyini izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

PyTest-də, scope parametri fixture-ın həyat dövrünü (yaşayış dövrünü) müəyyən edir — yəni, testlərdə nə qədər müddətə yaradılacaq və istifadə olunacaq.

Əsas scope dəyərləri:

  • function (varsayılan): fixture hər test üçün yenidən yaradılır.
  • class: fixture hər test sinfi üçün bir dəfə yaradılır.
  • module: fixture hər modul (test faylı) üçün bir dəfə yaradılır.
  • package: fixture hər paket üçün bir dəfə yaradılır.
  • session: fixture bütün test sessiyası üçün bir dəfə yaradılır.

Məsələn, scope="module" olan fixture, modul daxilində bütün testlər işlədilmədən əvvəl bir dəfə başlatılır və onların tamamlanmasından sonra yox edilir. Bu, vaxt və resursların qənaətinə kömək edir, xüsusən də fixture, məsələn, verilənlər bazası və ya serverə bağlantı qurursa.

Scope nümunəsi:

import pytest

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

Beləliklə, scope testlərin performansına və izolyasiyasına təsir edir, resursların nə qədər tez-tez yaradılıb yox edilməsi üzərində nəzarət etməyə imkan verir.