Junior — Middle
შეგიძლიათ ახსნათ, რა ნიშნავს Scope კონცეფცია PyTest-ის კონტექსტში და როგორ ახდენს ის გავლენას ტესტების შესრულებაზე?
sobes.tech AI
პასუხი AI-სგან
PyTest-də, scope parametri fixture-ın həyat dövrünü (yaşayış dövrünü) müəyyən edir — yəni, nə qədər müddətə yaradılacaq və testlərdə 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.