Тест должен проверять и изменённое содержимое исходного списка, и идентичность возвращённого объекта через 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)
Проверяются пустой список, один элемент, нечётная длина и повторения. Новая копия создаётся только для изоляции входа теста, не как ожидаемое поведение функции.