如何使用doctest测试浮点数结果?

时间:2010-03-11 20:58:47

标签: python unit-testing floating-point doctest

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

5 个答案:

答案 0 :(得分:12)

当然,只需根据您对所期望的精度的了解,以合理的格式格式化浮点数 - 例如,如果您希望精确到小数点后的2位数,则可以使用:

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

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

'''

答案 1 :(得分:9)

The documentation有一个建议

  

浮点数也是   受产量变化小的影响   跨平台,因为Python   推迟到平台C库   浮动格式,C库各不相同   在这里质量很高。

>>> 1./7  # risky
0.14285714285714285
>>> print 1./7 # safer
0.142857142857
>>> print round(1./7, 6) # much safer
0.142857

答案 2 :(得分:8)

以下适用于nosetests:

>>> 1/3.  # doctest: +ELLIPSIS
0.333...

答案 3 :(得分: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'

答案 4 :(得分:0)

您可以使用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

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