Junior — Middle
Jaka jest różnica między słowami kluczowymi Yield i Return w kontekście testowania z PyTest?
sobes.tech AI
Odpowiedź od AI
W kontekście PyTest słowa kluczowe yield i return są używane w fixture, ale pełnią różne role.
-
returnpo prostu zwraca wartość z fixture, która będzie dostępna dla testu. -
yieldsłuży do podzielenia fixture na dwie części: przedyield— przygotowanie, poyield— kod czyszczenia (teardown). Pozwala to na wykonywanie działań po teście, takich jak zwalnianie zasobów.
Przykład fixture z yield:
import pytest
@pytest.fixture
def resource():
# przygotowanie
res = acquire_resource()
yield res
# czyszczenie
release_resource(res)
Jeśli użyjemy return, kod po nim nie zostanie wykonany, a czyszczenie nie nastąpi automatycznie.
Podsumowując, yield w fixture PyTest pozwala wygodnie zarządzać cyklem życia zasobów, podczas gdy return po prostu zwraca wartość.