Sobes.tech
Senior

Hoe voeg je het opschonen van de lijst toe na het voltooien van de test? Wat is het verschil tussen yield en AdFinalizer?

sobes.tech AI

Antwoord van AI

In tests in Python met pytest om resources na de test te reinigen, wordt vaak de constructie met yield gebruikt in fixtures. De code vóór yield wordt vóór de test uitgevoerd, en na yield — na de test, wat handig is voor het opschonen, bijvoorbeeld een lijst.

Voorbeeld van een fixture met lijstopschoning:

import pytest

@pytest.fixture
def my_list():
    lst = [1, 2, 3]
    yield lst
    lst.clear()  # Opschonen na de test

AdFinalizer is een methode in pytest waarmee je een opruimfunctie kunt toevoegen die na de test wordt aangeroepen. Het kan binnen een fixture worden gebruikt via request.addfinalizer(cleanup_func).

Verschil tussen yield en addfinalizer:

  • yield is een meer leesbare en moderne manier om setup/teardown te organiseren in fixtures.
  • addfinalizer maakt het mogelijk om meerdere opruimfuncties dynamisch toe te voegen.

Voorbeeld met addfinalizer:

import pytest

def cleanup():
    print("Opschonen na de test")

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

Over het algemeen is yield de voorkeur voor eenvoudige gevallen, addfinalizer voor complexere scenario's met meerdere finalisatoren.