Junior — Middle
Können Sie erklären, was der Begriff Scope im Kontext von PyTest bedeutet und wie er die Ausführung von Tests beeinflusst?
sobes.tech KI
Antwort von AI
In PyTest legt der Parameter scope den Lebensbereich (Lebenszyklus) der Fixture fest – also, wie lange sie in den Tests erstellt und verwendet wird.
Die wichtigsten Werte für scope sind:
- function (Standard): Die Fixture wird für jeden Test neu erstellt.
- class: Die Fixture wird einmal pro Testklasse erstellt.
- module: Die Fixture wird einmal pro Modul (Testdatei) erstellt.
- package: Die Fixture wird einmal pro Paket erstellt.
- session: Die Fixture wird einmal für die gesamte Testsitzung erstellt.
Zum Beispiel, wenn die Fixture den scope="module" hat, wird sie einmal initialisiert, bevor alle Tests im Modul ausgeführt werden, und nach deren Ausführung wieder zerstört. Das spart Zeit und Ressourcen, besonders wenn die Fixture eine Verbindung zu einer Datenbank oder einem Server aufbaut.
Beispiel für eine Fixture mit scope:
import pytest
@pytest.fixture(scope="module")
def db_connection():
conn = create_connection()
yield conn
conn.close()
Auf diese Weise beeinflusst der scope die Leistung und Isolierung der Tests, indem er steuert, wie oft Ressourcen erstellt und zerstört werden.