Я работаю над Python-версией библиотеки, которая имеет другие версии с хорошо установленными результатами.Из-за этого у меня есть строки в моих строках документов, такие как
>>> air_f(0,0,0,0.9,300.,1.)
-95019.5943231
, где точность находится в пределах того, о чем должны соглашаться все версии.Если я запускаю doctest
для этого кода, вместо этого он ожидает значение -95019.59432308903
, которое соответствует, но с более высокой точностью.В другом случае 8.50371537341e-04
отклоняется в пользу 0.0008503715373413415
, который имеет только одну цифру точности, но другого формата.
Я знаю несколько способов справиться с этим.Я мог бы пройтись и изменить все числа с полной точностью или добавить операторы форматирования печати перед каждым из них, чтобы они соответствовали только точности.Проблема состоит в том, что каждый из 50+ отдельных файлов в библиотеке может содержать десятки этих строк, и конкретная строка формата отличается для каждого.Я видел numtest , но я не знаю, зрел ли он (плюс у меня проблемы с его установкой).
Я надеюсь, что есть какой-то способ расширить конструкцию
if __name__ == '__main__':
import doctest
doctest.testmod()
, поэтому doctest
использует более слабый критерий равенства с плавающей точкой.Добавление этого в 50 файлов намного более управляемо, чем изменение более 1000 отдельных строк.Я не знаком с doctest
, поэтому не знаю, возможно ли это или как это сделать.Мысли?