Teardowns voor fixtures

Introductie tot testen in Python

Alexander Levin

Data Scientist

Wat is een fixture teardown

  • Fixture teardown: het opruimen van resources die tijdens de setup van de testomgeving zijn toegewezen of aangemaakt.

De “picknick”-analogie:

  1. Nodig vrienden uit en maak eten klaar
  2. Veel plezier!
  3. Opruimen — dat is de teardown
Introductie tot testen in Python

Waarom teardowns gebruiken

Het is belangrijk om aan het einde van een test de omgeving op te ruimen. Zonder teardown kun je grote problemen krijgen:

  • Geheugenlekken
  • Trage uitvoering en performanceproblemen
  • Ongeldige testresultaten
  • Pipeline-fouten en -errors
Introductie tot testen in Python

Wanneer gebruiken

Wanneer gebruiken:

  • Grote objecten
  • Meer dan één test
  • Gebruik van autouse

Wanneer niet nodig:

  • Eén simpel script met één test
Introductie tot testen in Python

Lui evalueren in Python

  • yield is een Python-sleutelwoord om generators te maken
# Voorbeeld van een generator-functie
def lazy_increment(n):
    for i in range(n):
        yield i
f = lazy_increment(5)
next(f) # 0
next(f) # 1
next(f) # 2
Introductie tot testen in Python

Hoe gebruiken

Hoe gebruiken:

  • Vervang return door yield
  • Zet teardown-code na yield
  • Zorg dat setup-code alleen vóór yield staat
Introductie tot testen in Python

Voorbeeld 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
Introductie tot testen in Python

Samenvatting

  • Definitie: Fixture teardown — het opruimen van resources die tijdens de setup zijn aangemaakt.
  • Gebruik:
    • Het sleutelwoord yield in plaats van return
    • Teardown-code na yield
  • Voordelen:
    • Voorkomt softwarefouten
    • Voorkomt prestatieverlies
  • Wanneer gebruiken: Altijd bij meer dan één test!
Introductie tot testen in Python

Laten we oefenen!

Introductie tot testen in Python

Preparing Video For Download...