我正在编写一些适用于非常大和非常小的浮点数的代码(例如,1e-150 可能是一个有效的答案)。为了对此进行单元测试,我想将浮点数与一些有效数字而不是小数位进行比较,所以我有以下内容。
import unittest as ut
from numpy.testing import assert_approx_equal
class newTestCase(ut.TestCase):
"""Extends the basic unittest TestCase."""
def assertSFAlmostEqual(self, a, b, places=7):
"""Uses numpy to test if two floats are the same but to a defined
number of significant figures rather than decimal places.
Args:
a: float to be compared
b: float to be compared
places: number of significant figures to match. unittest default
for assertAlmostEqual is 7, so 7 is the default here
"""
if isinstance(a, float) != True or isinstance(b, float) != True:
raise TypeError
raised = False
try:
assert_approx_equal(a, b, significant=places)
except:
raised = True
self.assertFalse(raised, "FLoats %g and %g are not equal to %i "
"significant figures" % (a, b, places))
这似乎工作正常,但我计划在很多地方使用它,所以我想确定它真的能正常工作。我的问题是我怎样才能最明智地做到这一点?是否有适当的机制来对单元测试进行单元测试?
我在这里找到了可能的答案,
但我不明白这是如何工作的。
首先十分感谢!