使用AssertalPosteQual的Python 2.7单元测试运行不正常

使用AssertalPosteQual的Python 2.7单元测试运行不正常,python,python-unittest,Python,Python Unittest,我的python版本是2.7.13 我需要使用unittest模块进行测试,我正在测试的数据类型是float。在文档中,当比较浮动是否相等时,使用assertAlmostEqual处理小差异 这就是我所做的: self.assertAlmostEqual(41.776,41.777,places=3) 我运行上述代码,它会产生失败的测试结果,如下所示: self.assertAlmostEqual(41.776,41.777,places=3) 断言错误:41.776!=41.777在3个位置内

我的python版本是2.7.13

我需要使用
unittest
模块进行测试,我正在测试的数据类型是float。在文档中,当比较浮动是否相等时,使用
assertAlmostEqual
处理小差异

这就是我所做的:

self.assertAlmostEqual(41.776,41.777,places=3)

我运行上述代码,它会产生失败的测试结果,如下所示:

self.assertAlmostEqual(41.776,41.777,places=3)
断言错误:41.776!=41.777在3个位置内

我做错了什么,还是这是一个bug?

来自:

通过计算差值,四舍五入到给定的小数位数(默认为7),并与零进行比较,测试第一个和第二个是否近似相等。请注意,这些方法将值四舍五入到给定的小数位数(如round()函数),而不是有效数字


在您的情况下,
round(41.776-41.777,3)!=0.0

您的数字不等于小数点后3位:

通过计算差值,四舍五入到给定的小数位数(默认为7),并与零进行比较,测试第一个和第二个是否近似相等


四舍五入到小数点后3位的数字之间的差值是
0.001

到三位,
41.77776
41.778
。它是先取差值,然后四舍五入,而不是四舍五入,然后比较。因此,如果我想通过测试,我必须写
assertAlmostEqual(41.776,41.777,2)
我说的对吗?@MosheRabaev:对。