Junior — Middle
Czy możesz wyjaśnić, co oznacza pojęcie Scope w kontekście PyTest i jak wpływa na wykonywanie testów?
sobes.tech AI
Odpowiedź od AI
W PyTest parametr scope określa zakres życia (cykl życia) fixture — czyli, jak długo będzie tworzona i używana w testach.
Główne wartości scope:
- function (domyślnie): fixture jest tworzona na nowo dla każdego testu.
- class: fixture jest tworzona raz na każdą klasę testową.
- module: fixture jest tworzona raz na każdy moduł (plik testowy).
- package: fixture jest tworzona raz na pakiet.
- session: fixture jest tworzona raz na całą sesję testową.
Na przykład, jeśli fixture ma scope="module", to jest inicjalizowana raz przed uruchomieniem wszystkich testów w module i niszczona po ich wykonaniu. To pozwala zaoszczędzić czas i zasoby, szczególnie jeśli fixture tworzy np. połączenie z bazą danych lub serwerem.
Przykład fixture z scope:
import pytest
@pytest.fixture(scope="module")
def db_connection():
conn = create_connection()
yield conn
conn.close()
W ten sposób, scope wpływa na wydajność i izolację testów, pozwalając kontrolować, jak często tworzone i niszczone są zasoby.