Простой тест для функции окружности? - PullRequest
0 голосов
/ 24 мая 2018

Я никогда раньше не использовал PyTest, и меня это сильно смущает.Я просто хочу написать базовый тест для моей функции окружности.Любая помощь будет принята с благодарностью.

import math

def getCircumference():
    radius = int(input("Please enter a radius size: "))
    circumference = 2 * math.pi * radius
    print("The circumference of the circle is", circumference)

1 Ответ

0 голосов
/ 24 мая 2018

Цель модульного теста - проверить правильность функционирования функций.Лучше всего это сделать, проверив, возвращает ли функция правильный результат для известного ввода.Ваша функция не требует ввода и не возвращает результата, поэтому ее тестирование намного сложнее, чем должно быть.Это также менее полезно в других ситуациях.

Что бы я ожидал от функции getCircumference, это то, что она:

  • называется get_circumference (из-за PEP 8)
  • принимает один аргумент: radius
  • возвращает окружность (в конце концов, его название означает, что она возвращает окружность)

Следовательно:

def get_circumference(radius):
    return 2 * math.pi * radius

Затем тест будет выполнять что-то вроде:

def test_get_circumference():
    # using pytest.approx to avoid problems related to floating point precision
    assert get_circumference(7) == pytest.approx(43.982297150257104)
    assert get_circumference(3.678) == pytest.approx(23.109555559806516)

С другой стороны, если вы действительно хотите протестировать функцию как есть, вы должны создать гораздо более сложный тест, который бы переопределил sys.stdin (для того, чтобы подделать ввод пользователя) и sys.stdout (для проверки вывода).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...