在我的测试案例中,我假设如果两个值是 NaN 则它们相等。使用 unittest 断言的表达方式是什么?下面介绍的两个常用函数不处理这种情况。

v1 = np.nan
v2 = np.nan
self.assertEquals(v1, v2)
self.assertTrue(v1 == v2)

现在对我有用的解决方案是在 assertTrue 中使用 bool 表达式:
self.assertTrue(v1 == v2 or (np.isnan(v1) and np.isnan(v2))

最佳答案

你可以使用:

numpy.testing.assert_equal(v1, v2)

来自 docs :



当值不相等时它会抛出 AssertionError 并且它应该可以与 pytest 一起正常工作,但它可能不适合单元测试测试。

另一种选择是:
numpy.isclose(v1, v2, equal_nan=True)

但显然它是 math.isclose 的替代品,而不是 ==

关于python - unittest - 如何断言两个可能的 NaN 值是否相等,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51728427/

10-12 20:59