Лабы / ЛР1_тесты
.docxfrom real_roots import real_roots
TEST_DATA = [ #кортеж со словарями входных и выходных значений
{"input": [2, 5, -7], "output": [1.0, -3.5],},
{"input": [16, -8, 1], "output": 0.25,},
{"input": [9, -6, 2], "output": "Корней нет",},
{"input": [0, 4, -8], "output": 2.0,},
{"input": ["fwfsd", 4, -8], "output": "Некорректный ввод: a = fwfsd, b = 4, c = -8",},
{"input": [0, 0, 0], "output": "Деление на ноль",},
{"input": [1, "inf", 2], "output": "Некорректный ввод: a = 1.0, b = inf, c = 2.0",},
{"input": [1, 2, "nan"], "output": "Некорректный ввод: a = 1.0, b = 2.0, c = nan",},
{"input": [1, 1.7e308, 1], "output": "Слишком большое число",},
]
def run_tests(test_data):
for data in test_data:
a, b, c = data["input"]
output_data = data["output"]
try:
output = real_roots(a, b, c) #выполняем медот из real_roots
assert output == output_data #сравниваем значения из теста с полученными результатами
print(
f'\U00002705 Тест с входными параметрами a = {a}, b = {b}, c = {c}, output = {output_data} успешно пройден,'
)
except RuntimeError as e: #если возникло исключение, проверям. такое оно, как мы ждем или нет:
assert str(e) == output_data
print(
f'\U00002705 Тест с входными параметрами a = {a}, b = {b}, c = {c}, output = {output_data} успешно пройден'
)
except ZeroDivisionError as e: #проверка на деление на ноль
assert str(e) == output_data
print(
f'\U00002705 Тест с входными параметрами a = {a}, b = {b}, c = {c}, output = {output_data} успешно пройден'
)
except OverflowError as e: #проверка на большие числа
assert str(e) == output_data
print(
f'\U00002705 Тест с входными параметрами a = {a}, b = {b}, c = {c}, output = {output_data} успешно пройден'
)
except Exception as e: #и если не такое, переходим сюда
print(
f'\U0000274C Тест с входными параметрами a = {a}, b = {b}, c = {c}, output = {output_data} не пройден'
)
if __name__ == "__main__": #"Область видимости"
run_tests(TEST_DATA)