Senior
Test tamamlandıqdan sonra siyahını təmizləməni necə əlavə etmək olar? yield və AdFinalizer arasında fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Python-da pytest istifadə edərək testdən sonra resursları təmizləmək üçün, tez-tez fixture-lərdə yield ilə quruluş istifadə olunur. yield-dən əvvəlki kod testdən əvvəl icra olunur, və yield-dən sonra — testdən sonra, bu, məsələn, siyahını təmizləmək üçün əlverişlidir.
Siyahını təmizləmək üçün fixture nümunəsi:
import pytest
@pytest.fixture
def my_list():
lst = [1, 2, 3]
yield lst
lst.clear() # Testdən sonra təmizləmə
AdFinalizer pytest-də testdən sonra çağırılacaq təmizləmə funksiyasını əlavə etməyə imkan verən bir metoddur. Bu, request.addfinalizer(cleanup_func) vasitəsilə fixture daxilində istifadə oluna bilər.
yield və addfinalizer arasındakı fərqlər:
yield, fixture-lərdə setup/teardown təşkil etmək üçün daha oxunaqlı və müasir bir yoldur.addfinalizer, dinamik olaraq çoxsaylı təmizləmə funksiyalarını əlavə etməyə imkan verir.
addfinalizer ilə nümunə:
import pytest
def cleanup():
print("Testdən sonra təmizləmə")
@pytest.fixture
def my_resource(request):
# setup
request.addfinalizer(cleanup)
return some_resource
Ümumiyyətlə, yield sadə hallarda üstün tutulur, addfinalizer isə daha mürəkkəb ssenarilər və çoxsaylı finalizatorlar üçün istifadə olunur.