Я разрабатываю программу, которая делает вычисления с плавающей запятой. Есть ли способ проверить мои функции (которые предоставляют поплавки) с помощью доктрин?
Как проверить результаты поплавка с помощью доктрины?
Ответ 1
Конечно, просто отформатируйте поплавки в разумном формате на основе ваших знаний о том, какую точность вы ожидаете от них, например, если вы ожидаете точности до двух цифр после десятичной точки, вы можете использовать:
''' Rest of your docstring and then...
>>> '%.2f' % funcreturningfloat()
'123.45'
'''
Ответ 2
В документации есть предложение
Числа с плавающей запятой также с учетом небольших вариаций выпуска через платформы, потому что Python откладывает библиотеку платформы C для форматирование с плавающей запятой и библиотеки C различаются широко здесь.
>>> 1./7 # risky
0.14285714285714285
>>> print 1./7 # safer
0.142857142857
>>> print round(1./7, 6) # much safer
0.142857
Ответ 3
Следующие работы для носететов:
>>> 1/3. # doctest: +ELLIPSIS
0.333...
Ответ 4
Формат строки позволяет использовать тестовые кортежи.
>>> funcreturningfloattuple(1.0)
(1.0, 1.0)
>>> '%.2f, %.2f' % funcreturningfloattuple(1.0)
'1.00, 1.00'
>>> funcreturningfloattuple(1.4)
(1.3999999999999999, 1.3999999999999999)
>>> '%.2f, %.2f' % funcreturningfloattuple(1.4)
'1.40, 1.40'
Ответ 5
Вы можете использовать numestest - расширение доктрины, которое упрощает проверку числовых результатов. https://pypi.python.org/pypi/numtest
>>> 1.0/3
0.333
Ошибка: 1.0/3 Ожидаемое: 0,333 Получил: 0,3333333333333333
>>> 1.0/3 # doctest: +NUMBER
0.333
import doctest
import numtest
doctest.testmod()
Процесс завершен кодом выхода 0
Все тесты прошли. Нет необходимости форматирования строк в ваших тестах.