Предположим, у меня есть функция с именем "factorial", и я хочу протестировать эту функцию. Я часто переписываю юнит-тесты, подобные показанному ниже, где я определяю некоторые тестовые случаи, возможно, включая некоторые крайние случаи, выполняя тесты для всех них. Этот общий паттерн, определяющий значения тестов и ожидаемый выходной результат и выполняющиеся на них тесты, оставляет мне следующий стандартный код. По сути, я хотел бы иметь функцию one , в которую я передаю список тестовых значений со списком ожидаемых значений и функцию для его тестирования и позволяю инфраструктуре обрабатывать все остальное для меня. Существует ли что-то подобное и что говорит против такого упрощенного подхода?
import unittest
class TestRecursionAlgorithms(unittest.TestCase):
def test_factorial(self):
input_values = [1, 2, 3, 4, 5]
solutions = [1, 2, 6, 24, 120]
for idx, (input_value, expected_solution) in enumerate(zip(input_values, solutions)):
with self.subTest(test_case=idx):
self.assertEqual(expected_solution, factorial(input_value))
Приветствия