Sobes.tech
Junior — Middle

Qual è la differenza tra le parole chiave Yield e Return nel contesto dei test con PyTest?

sobes.tech AI

Risposta dell'AI

Nel contesto di PyTest, le parole chiave yield e return vengono utilizzate nelle fixture, ma hanno ruoli diversi.

  • return restituisce semplicemente un valore dalla fixture, che sarà disponibile al test.

  • yield viene usato per dividere la fixture in due parti: prima di yield — preparazione, dopo yield — codice di cleanup (teardown). Questo permette di eseguire azioni dopo il test, come liberare risorse.

Esempio di fixture con yield:

import pytest

@pytest.fixture
def resource():
    # preparazione
    res = acquire_resource()
    yield res
    # cleanup
    release_resource(res)

Se si usa return, il codice dopo di esso non verrà eseguito e il cleanup non avverrà automaticamente.

In breve, yield nelle fixture di PyTest permette di gestire comodamente il ciclo di vita delle risorse, mentre return serve semplicemente a restituire un valore.