5
4

1 回答 1

4

为什么不使用 map 在每个维度中使用 assertAlmostEqual?我无权访问您的课程,所以我在这里写了一个类似的示例:

from unittest import TestCase

class Test_Tuple_Equality(TestCase):
    def test_tuple_equality_True(self):
        p1 = (0.00000001, 0.00000000001, 0)
        p2 = (0,0,0)
        map(lambda x, y: self.assertAlmostEqual(x,y), p1, p2)

    def test_tuple_equality_False(self):
        p1 = (0.00000001, 0.00000000001, 0)
        p2 = (1,0,0)
        map(lambda x, y: self.assertAlmostEqual(x,y), p1, p2)

Map 会将您的 n 维元组比较转换为 n 个浮点比较。

您甚至可以创建一个 compare_points 函数,例如:

def compare_points(self, p1, p2):
    map(lambda x,y: self.assertAlmostEqual(x,y), p1,p2)

然后在你的测试中使用它

另一种解决方案是为此使用 numpy 的方法:

import numpy

>>>numpy.testing.assert_almost_equal((2,2,0), (1.9999999999,2,0), decimal=7, err_msg='', verbose=True)

Numpy 安装起来很麻烦,但是,如果您已经在使用它,那将是最合适的。

于 2013-09-15T02:29:24.580 回答