我想为我的应用程序做一些单元测试,并且我需要比较两个数组。既然array.__eq__返回一个新的数组(所以TestCase.assertEqual会失败),那么断言相等的最佳方式是什么?
目前我使用的是
self.assertTrue((arr1 == arr2).all())但我真的不喜欢
发布于 2010-07-23 06:33:44
查看numpy.testing中的断言函数,例如
assert_array_equal
对于浮点数组,相等测试可能会失败,而assert_almost_equal更可靠。
更新
在几个版本之前,numpy获得了assert_allclose,它现在是我的最爱,因为它允许我们指定绝对和相对误差,并且不需要将小数四舍五入作为接近标准。
发布于 2010-07-22 03:35:00
我觉得(arr1 == arr2).all()看起来很不错。但是你可以使用:
numpy.allclose(arr1, arr2)但这并不完全一样。
与您的示例几乎相同的另一种选择是:
numpy.alltrue(arr1 == arr2)请注意,scipy.array实际上是一个引用numpy.array。这使得查找文档变得更容易。
发布于 2014-09-26 03:01:55
我发现使用self.assertEqual(arr1.tolist(), arr2.tolist())是比较数组和unittest最简单的方法。
我同意这不是最好的解决方案,它可能也不是最快的,但它可能与您的其余测试用例更一致,您可以获得所有单元测试错误描述,并且它真的很容易实现。
https://stackoverflow.com/questions/3302949
复制相似问题