Teardown Fixture

Pengantar Pengujian di Python

Alexander Levin

Data Scientist

Apa itu teardown fixture

  • Teardown fixture: proses membersihkan resource yang dialokasikan/dibuat saat setup lingkungan pengujian.

Ingat analogi “piknik”:

  1. Ajak teman dan siapkan makanan
  2. Bersenang-senang!
  3. Bereskan — itulah teardown
Pengantar Pengujian di Python

Mengapa menggunakan teardown

Penting untuk membersihkan environment di akhir test. Tanpa teardown, dapat timbul masalah besar:

  • Kebocoran memori
  • Eksekusi lambat dan isu kinerja
  • Hasil test tidak valid
  • Kegagalan dan error di pipeline
Pengantar Pengujian di Python

Kapan digunakan

Kapan digunakan:

  • Objek besar
  • Lebih dari satu test
  • Menggunakan autouse

Kapan tidak perlu:

  • Satu skrip sederhana dengan satu test
Pengantar Pengujian di Python

Evaluasi malas di Python

  • yield adalah kata kunci Python untuk membuat generator
# Contoh fungsi generator
def lazy_increment(n):
    for i in range(n):
        yield i
f = lazy_increment(5)
next(f) # 0
next(f) # 1
next(f) # 2
Pengantar Pengujian di Python

Cara pakai

Cara pakai:

  • Ganti return dengan yield
  • Tempatkan kode teardown setelah yield
  • Pastikan kode setup hanya sebelum yield
Pengantar Pengujian di Python

Contoh teardown

@pytest.fixture
def init_list():
    return []

@pytest.fixture(autouse=True)
def add_numbers_to_list(init_list):
    # Fixture Setup
    init_list.extend([i for i in range(10)])
    # Fixture output
    yield init_list
    # Teardown statement
    init_list.clear()

def test_9(init_list):
    assert 9 in init_list
Pengantar Pengujian di Python

Ringkasan

  • Definisi: Teardown fixture adalah proses membersihkan resource yang dialokasikan saat setup.
  • Penggunaan:
    • Gunakan kata kunci yield alih-alih return
    • Kode teardown ditempatkan setelah yield
  • Keuntungan:
    • Mencegah kegagalan perangkat lunak
    • Mencegah penurunan kinerja
  • Kapan digunakan: Selalu, jika memiliki lebih dari satu test!
Pengantar Pengujian di Python

Ayo berlatih!

Pengantar Pengujian di Python

Preparing Video For Download...