Привет У меня есть функция, которую я хотел бы проверить с помощью модульного теста:
def interleave(a,b):
m = len(a)
n = len(b)
N = m if m>n else n
result = []
for i in range(N):
result += [a[i], b[i]]
return result
Мой тест выглядит следующим образом:
from interleave import interleave
import unittest
class TestGettingStartedFunctions(unittest.TestCase):
def test_interleave(self):
cases = [
([], [], []), # corner case
([1, 4, 6], [], [1, 4, 6]),# edge case
([], [2, 3], [2, 3]),# edge case
([1], [9], [1, 9]), # regular case
([8, 8, 3, 9], [1], [8, 1, 8, 3, 9]),
([2], [7, 8, 9], [2, 7, 8, 9]),
]
for a, b, expected in cases:
self.assertEqual(interleave(a, b), expected)
Когда я запускаю тест,Я получаю следующее:
$ python test_interleave.py -v test_interleave ( main .TestGettingStartedFunction) ... ОШИБКА
====================================================================== ОШИБКА: test_interleave ( main .TestGettingStartedFunction) ---------------------------------------------------------------------- Traceback (большинствопоследний вызов последним): файл "test_interleave.py", строка 14, в test_interleave self.assertEqual (interleave (in1, in2), ожидаемый) файл "/Users/csarami/pythonExamples/interleave/interleave.py", строка 7, вчередовать результат + = [a [i], b [i]] IndexError: список индексов вне диапазона
---------------------------------------------------------------------- Ран 1тест за 0,001 с
FAILED (ошибки = 1)
Я хотел бы пройти тестовый возврат ([1], [9], [1, 9]) случай и сообщение о неудачном завершении другого с подробным описанием.
Любая помощь или обходные пути будут с благодарностью.