Мой 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)

0 ответов

Другие вопросы по тегам