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:
yieldis een meer leesbare en moderne manier om setup/teardown te organiseren in fixtures.addfinalizermaakt 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.