19

我正在开发一个进行一些浮点计算的程序。有没有办法用 doctests 测试我的函数(提供浮点数)?

4

5 回答 5

15

当然,只需根据您对期望它们表现出的精度的了解,以合理的格式格式化浮点数 - 例如,如果您期望精度为小数点后 2 位,您可以使用:

''' Rest of your docstring and then...

    >>> '%.2f' % funcreturningfloat()
    '123.45'

'''
于 2010-03-11T21:16:14.670 回答
9

该文档有一个建议

浮点数在不同平台上的输出变化也很小,因为 Python 遵循平台 C 库进行浮点格式化,而 C 库的质量差异很大。

>>> 1./7  # risky
0.14285714285714285
>>> print 1./7 # safer
0.142857142857
>>> print round(1./7, 6) # much safer
0.142857
于 2010-03-11T21:42:49.073 回答
9

以下适用于鼻子测试:

>>> 1/3.  # doctest: +ELLIPSIS
0.333...
于 2013-07-01T10:05:23.573 回答
3

您可以使用 numtest - 一个简化数值结果测试的 doctest 扩展。 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 结束

所有测试都通过了。在您的测试中不需要字符串格式。

于 2014-11-28T10:50:14.753 回答
0

字符串格式允许使用测试元组。

>>> 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'
于 2011-03-08T17:11:43.217 回答