Junior — Middle
PyTest kontekstida Scope tushunchasi nima ekanligini va u testlarni bajarilishiga qanday ta'sir qilishini tushuntirib bera olasizmi?
sobes.tech AI
AIdan javob
PyTest'da, 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 ediləcəyini idarə etməyə imkan verir.