Указание того, какие тестовые случаи дают сбой, когда список тестовых случаев передается в модульном тесте Python - PullRequest
0 голосов
/ 16 октября 2019

Привет У меня есть функция, которую я хотел бы проверить с помощью модульного теста:

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]) случай и сообщение о неудачном завершении другого с подробным описанием.

Любая помощь или обходные пути будут с благодарностью.

...