Sobes.tech
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.

  • return po prostu zwraca wartość z fixture, która będzie dostępna dla testu.

  • yield służy do podzielenia fixture na dwie części: przed yield — przygotowanie, po yield — 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ść.