Junior — Middle
PyTest bağlamında Scope kavramının ne anlama geldiğini ve testlerin yürütülmesini nasıl etkilediğini açıklayabilir misiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
PyTest'te, scope parametresi, fixture'ın yaşam alanını (yaşam döngüsünü) belirler — yani, testlerde ne kadar süreyle oluşturulup kullanılacağını.
Ana scope değerleri şunlardır:
- function (varsayılan): fixture her test için yeniden oluşturulur.
- class: fixture her test sınıfı için bir kez oluşturulur.
- module: fixture her modül (test dosyası) için bir kez oluşturulur.
- package: fixture her paket için bir kez oluşturulur.
- session: fixture tüm test oturumu boyunca bir kez oluşturulur.
Örneğin, scope="module" olan bir fixture, modüldeki tüm testler çalıştırılmadan önce bir kez başlatılır ve testler tamamlandıktan sonra yok edilir. Bu, zaman ve kaynak tasarrufu sağlar, özellikle fixture bir veritabanı bağlantısı veya sunucu gibi kaynaklar oluşturuyorsa.
Scope ile ilgili bir örnek:
import pytest
@pytest.fixture(scope="module")
def db_connection():
conn = create_connection()
yield conn
conn.close()
Bu şekilde, scope testlerin performansını ve izolasyonunu etkiler, kaynakların ne sıklıkla oluşturulup yok edileceğini kontrol etmeye olanak tanır.