Sobes.tech
Назад к вопросам
Junior — Middle
71

Какое отличие между ключевыми словами Yield и Return в контексте тестирования с использованием PyTest?

Компании, где спрашивали
РостелекомРостелеком

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:
Yield используется в фикстурах PyTest для разделения этапов подготовки и очистки ресурсов, позволяя выполнить код после теста. Return просто возвращает значение и завершает выполнение функции, не поддерживая пост-обработку.

Определение:
В PyTest ключевое слово yield в фикстурах позволяет сначала вернуть ресурс тесту, а после его выполнения выполнить код очистки. return возвращает значение и завершает функцию сразу, не предоставляя возможности выполнить код после теста.

Пример использования:

import pytest

@pytest.fixture
def resource():
    # Подготовка ресурса
    res = {"data": 123}
    yield res  # Возвращаем ресурс тесту
    # Очистка после теста
    res.clear()

def test_example(resource):
    assert resource["data"] == 123

Пояснение кода:
Фикстура resource сначала создает и возвращает словарь с данными через yield. После выполнения теста код после yield очищает ресурс. Если бы использовался return, то очистка не была бы выполнена, так как функция завершилась бы сразу.

Ключевые моменты:

  • yield в фикстурах PyTest позволяет разделить подготовку и очистку ресурсов.
  • Код после yield выполняется после теста, обеспечивая teardown.
  • return возвращает значение и завершает функцию сразу, без возможности выполнить код после.
  • Использование yield удобно для управления жизненным циклом ресурсов в тестах.
  • yield применяется только в фикстурах, return — в обычных функциях.