Junior — Middle
Kun je uitleggen wat de betekenis van Scope is in de context van PyTest en hoe het de uitvoering van tests beïnvloedt?
sobes.tech AI
Antwoord van AI
In PyTest bepaalt de parameter scope de levensduur (levenscyclus) van de fixture — oftewel, hoe lang deze wordt aangemaakt en gebruikt in de tests.
De belangrijkste scope-waarden zijn:
- function (standaard): de fixture wordt opnieuw aangemaakt voor elke test.
- class: de fixture wordt één keer per testklasse aangemaakt.
- module: de fixture wordt één keer per module (testbestand) aangemaakt.
- package: de fixture wordt één keer per pakket aangemaakt.
- session: de fixture wordt één keer voor de hele testsessie aangemaakt.
Bijvoorbeeld, als de fixture scope="module" heeft, wordt deze één keer geïnitialiseerd voordat alle tests in de module worden uitgevoerd en wordt deze na afloop vernietigd. Dit bespaart tijd en resources, vooral als de fixture bijvoorbeeld een verbinding met een database of server opzet.
Voorbeeld van een fixture met scope:
import pytest
@pytest.fixture(scope="module")
def db_connection():
conn = create_connection()
yield conn
conn.close()
Op deze manier beïnvloedt scope de prestaties en isolatie van de tests, door te controleren hoe vaak resources worden gemaakt en vernietigd.