В контексте PyTest ключевые слова yield и return используются в фикстурах, но имеют разные роли.
Корректно ли использовать в этой фикстуре return или нужен yield?
В контексте PyTest ключевые слова yield и return используются в фикстурах, но имеют разные роли.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В контексте PyTest ключевые слова yield и return используются в фикстурах, но имеют разные роли.
returnпросто возвращает значение из фикстуры, которое будет доступно тесту.yieldиспользуется для разделения фикстуры на две части: доyield— подготовка, послеyield— код очистки (teardown). Это позволяет выполнять действия после теста, например, освобождение ресурсов.
Пример фикстуры с yield:
import pytest
@pytest.fixture
def resource():
# подготовка
res = acquire_resource()
yield res
# очистка
release_resource(res)
Если использовать return, то код после него не выполнится, и очистка не произойдет автоматически.
Итого, yield в фикстурах PyTest позволяет удобно управлять жизненным циклом ресурсов, а return — просто возвращать значение.