Тестирование функции обратного порядка списка

Тест должен проверять и изменённое содержимое исходного списка, и идентичность возвращённого объекта через assertIs. Одного сравнения значений недостаточно: копия тоже могла бы пройти его.

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

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

Тест должен проверять и изменённое содержимое исходного списка, и идентичность возвращённого объекта через assertIs. Одного сравнения значений недостаточно: копия тоже могла бы пройти его.

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

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

Условие

Необходимо написать тест, который проверяет корректность работы функции reverse_list(elements: list) -> list. Функция должна:

  • изменить порядок элементов списка на противоположный непосредственно в переданном объекте;
  • вернуть именно тот же объект списка.

def reverse_list(elements: list) -> list:
    elements.reverse()
    return elements

Ответ

Тест должен проверять и изменённое содержимое исходного списка, и идентичность возвращённого объекта через assertIs. Одного сравнения значений недостаточно: копия тоже могла бы пройти его.

Пример unittest:

import unittest

class ReverseListTest(unittest.TestCase):
    def test_reverse_in_place(self):
        for initial, expected in [([], []), ([1], [1]),
                                  ([1, 2, 3], [3, 2, 1]),
                                  ([1, 1, 2], [2, 1, 1])]:
            with self.subTest(initial=initial):
                data = initial.copy()
                returned = reverse_list(data)
                self.assertIs(returned, data)
                self.assertEqual(data, expected)

Проверяются пустой список, один элемент, нечётная длина и повторения. Новая копия создаётся только для изоляции входа теста, не как ожидаемое поведение функции.

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

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

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

Подробнее