Как проверить тестовым сценарием, что функция возвращает ожидаемую структуру и тип list?

В тесте отдельно проверяют тип результата, его форму и значения. Для list используют isinstance(result, list), а если требуется именно встроенный тип — type(result) is list.

Короткий ответ

Что ответить на собеседовании

В тесте отдельно проверяют тип результата, его форму и значения. Для list используют isinstance(result, list), а если требуется именно встроенный тип — type(result) is list.

Подробный разбор

Ответ с пояснениями

В тесте отдельно проверяют тип результата, его форму и значения. Для list используют isinstance(result, list), а если требуется именно встроенный тип — type(result) is list.

Условный pytest-тест для функции, которая по контракту возвращает записи с id:

def test_result_structure():
    result = function_under_test()
    assert isinstance(result, list)
    assert all(isinstance(item, dict) for item in result)
    assert all('id' in item for item in result)
    assert result == [{'id': 1}, {'id': 2}]

Имя функции и ожидаемые записи здесь иллюстративны: их заменяют данными конкретного контракта. Добавьте отдельный сценарий пустого результата и ошибочного входа. Одной проверки all недостаточно, если список обязан быть непустым: для пустого списка она истинна.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее