Sobes.tech
Senior

Test tamamlandıktan sonra listenin temizlenmesini nasıl eklerim? yield ile AdFinalizer arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Python'da pytest kullanarak test sonrası kaynakları temizlemek için, sıklıkla fixture'larda yield kullanımı tercih edilir. yield öncesi kod test öncesi çalışır, yield sonrası ise test sonrası çalışır ve liste temizleme gibi işlemler için uygundur.

Liste temizleme ile fixture örneği:

import pytest

@pytest.fixture
def my_list():
    lst = [1, 2, 3]
    yield lst
    lst.clear()  # Test sonrası temizleme

AdFinalizer, pytest'te test sonrası çağrılacak temizlik fonksiyonu eklemeye imkan tanıyan bir yöntemdir. Bunu request.addfinalizer(cleanup_func) ile fixture içinde kullanabilirsiniz.

yield ve addfinalizer arasındaki farklar:

  • yield, fixture'larda setup/teardown düzenlemesi için daha okunabilir ve modern bir yoldur.
  • addfinalizer, birden fazla temizlik fonksiyonunu dinamik olarak eklemeye olanak sağlar.

addfinalizer ile örnek:

import pytest

def cleanup():
    print("Test sonrası temizlik")

@pytest.fixture
def my_resource(request):
    # setup
    request.addfinalizer(cleanup)
    return some_resource

Genel olarak, basit durumlar için yield tercih edilir, daha karmaşık senaryolar ve çoklu finalizer'lar için addfinalizer kullanılır.