Sobes.tech
Junior — Middle

Milline on erinevus võtmesõnade Yield ja Return vahel PyTesti testimise kontekstis?

sobes.tech AI

Vastus AI-lt

PyTest kontekstis kasutatakse võtmesõnu yield ja return fixture-ides, kuid neil on erinevad rollid.

  • return lihtsalt tagastab väärtuse fixture-ist, mis on testile kättesaadav.

  • yield kasutatakse fixture-i kaheks jagamiseks: enne yield — ettevalmistus, pärast yield — puhastuskood (teardown). See võimaldab teha toiminguid pärast testi, näiteks ressursside vabastamine.

Näide fixture-ist yield-iga:

import pytest

@pytest.fixture
def resource():
    # ettevalmistus
    res = acquire_resource()
    yield res
    # puhastamine
    release_resource(res)

Kui kasutatakse return, siis selle järel olev kood ei käivitu ja puhastamine ei toimu automaatselt.

Kokkuvõtteks võimaldab yield fixture-ides mugavalt hallata ressursside elutsüklit, samas kui return lihtsalt tagastab väärtuse.