Мой doctest не работает, как я ожидаю, без doctest он работает правильно
Я довольно новичок в Python и только учусь отлаживать и тестировать мой код. Мы должны были написать небольшой калькулятор ИМТ для нашего курса. Однако, если я пытаюсь запустить его с тестами, я получаю сообщение об ошибке:
Please enter only non-negative numbers.
Failure <Click to see difference>
**********************************************************************
File "C:/Users/TAGI/PycharmProjects/703410_U7_Tests/Programs/BMI/task.py", line 39, in task.bmi
Failed example:
bmi(-1, 200)
Expected:
Please enter only non-negative numbers.
Got:
Please enter only non-negative numbers.
-0.25
Почему по-прежнему вычисляется результат с отрицательным числом после того, как я поднял исключение? Если я прокомментирую свои тесты и попробую это без него, то это прекрасно работает. Это мой код (с закомментированными документами):
def check_variables(a):
try:
float(a)
if a < 0:
raise ValueError
except ValueError:
print("Please enter only non-negative numbers.")
except:
print("This is an error: something went wrong. Please try again.")
return a
def bmi(a_weight, a_height):
# TODO: write docstring for this function
"""
This function returns the bmi of a person and tests the values. If they are invalid it returns an error.
:param a_weight: a real number, the users weight
:param a_height: a real number, the users height
:return: bmi of user
:rtype: float
# >>> bmi(10,0)
Traceback (most recent call last):
...
ZeroDivisionError: float division by zero
# >>> round(bmi(75,175), 1)
24.5
# >>> bmi("abc",177)
Traceback (most recent call last):
...
TypeError: unsupported operand type(s) for /: 'str' and 'float'
# >>> bmi(0, 180)
0.0
# >>> bmi(-1, 200)
Please enter only non-negative numbers.
# >>> bmi(100, -40)
Please enter only non-negative numbers.
# TODO: write doctest for this function
"""
return check_variables(a_weight) / (check_variables(a_height)/100) ** 2
bmi(-10, 180)