Проверьте пустой диапазон, границы 0 и 1, чётное и нечётное n, а также вызов без аргумента. Ожидаемые значения лучше задать явно, не копируя алгоритм функции в тест.
Разработать unit‑тест для функции, возвращающей чётные числа
Проверьте пустой диапазон, границы 0 и 1, чётное и нечётное n, а также вызов без аргумента. Ожидаемые значения лучше задать явно, не копируя алгоритм функции в тест.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Есть функция get_even_numbers(n: int = 10) -> list, которая формирует список всех чётных чисел в диапазоне от 0 до n‑1. Необходимо написать тест, который проверит корректность её работы для различных входных параметров.
def get_even_numbers(n: int = 10) -> list:
evens = []
for num in range(n):
if not num % 2:
evens.append(num)
return evens
Тест должен сравнивать результат функции с ожидаемым массивом чётных чисел, включая граничные случаи (n = 0, n = 1, типичные значения).
Ответ
Проверьте пустой диапазон, границы 0 и 1, чётное и нечётное n, а также вызов без аргумента. Ожидаемые значения лучше задать явно, не копируя алгоритм функции в тест.
Пример на стандартном unittest; get_even_numbers импортируется из проверяемого модуля:
import unittest
class EvenNumbersTest(unittest.TestCase):
def test_values(self):
cases = [(0, []), (1, [0]), (2, [0]),
(5, [0, 2, 4]), (6, [0, 2, 4]), (-2, [])]
for value, expected in cases:
with self.subTest(n=value):
self.assertEqual(get_even_numbers(value), expected)
def test_default(self):
self.assertEqual(get_even_numbers(), [0, 2, 4, 6, 8])
Отрицательное n в данной реализации даёт пустой список. Проверки неверных типов добавляются только после определения соответствующего контракта.