Python单元测试中的assertAlmostEqual用于浮点数的集合
Python的单元测试框架中的assertAlmostEqual(x,y)方法在假设和为浮点数的情况下测试和近似相等。xy 问题assertAlmostEqual()在于它仅适用于浮点数。我正在寻找一种类似的方法assertAlmostEqual(),可用于浮点数列表,浮点数集,浮点数字典,浮点数元组,浮点数元组列表,浮点数列表集等。 例如,我们x = 0.1234567890,y = 0.1234567891。x和y几乎相等,因为他们对每一个除了最后一个数字一致。因此self.assertAlmostEqual(x, y)是True因为assertAlmostEqual()适用于彩车。 我正在寻找一种更通用的方法assertAlmostEquals(),该方法还可以评估对的以下调用True: self.assertAlmostEqual_generic([x, x, x], [y, y, y])。 self.assertAlmostEqual_generic({1: x, 2: x, 3: x}, {1: y, 2: y, 3: y})。 self.assertAlmostEqual_generic([(x,x)], [(y,y)])。 有这种方法还是我必须自己实现? 说明: assertAlmostEquals()有一个名为的可选参数,places并且通过计算四舍五入到十进制数的差来比较数字places。默认情况下places=7,因此self.assertAlmostEqual(0.5, 0.4)为False,而self.assertAlmostEqual(0.12345678, 0.12345679)为True。我的投机assertAlmostEqual_generic()应该具有相同的功能。 如果两个列表具有完全相同的顺序几乎相等的数字,则认为它们几乎相等。正式地,for i in range(n): self.assertAlmostEqual(list1[i], list2[i])。 同样,如果两个集合可以转换为几乎相等的列表(通过为每个集合分配顺序),则认为它们几乎相等。 类似地,如果每个字典的键集几乎等于另一个字典的键集,则两个字典被认为几乎相等,并且对于每个这样的几乎相等的键对,都有一个相应的几乎相等的值。 总的来说:我认为两个集合如果相等就几乎相等,除了一些对应的float彼此几乎相等。换句话说,我真的想比较对象,但是在沿途比较浮点时精度(自定义)较低。