Цель модульного теста - проверить правильность функционирования функций.Лучше всего это сделать, проверив, возвращает ли функция правильный результат для известного ввода.Ваша функция не требует ввода и не возвращает результата, поэтому ее тестирование намного сложнее, чем должно быть.Это также менее полезно в других ситуациях.
Что бы я ожидал от функции 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
(для проверки вывода).