首页 > 解决方案 > 断言错误:数组([],dtype=int64)!=数组([],dtype=int64)

问题描述

我正在创建单元测试,并且我有一个测试用例,其中输出预计是一个空的 numpy 数组。我有第二个测试用例,我在其中测试另一个具有元素的预期数组。

class myTests(unittest.TestCase):
    def test_function(self):
        var = 0
        result = myFunction(var)
        self.assertEqual(np.array([], dtype=np.int64), result)

断言错误:数组([],dtype=int64)!=数组([],dtype=int64)

我有一种感觉,因为它们都是空的,但我不确定。我应该如何做这个测试?

我运行了一个调试器来比较这两个变量,这就是我得到的。

结果

array([], dtype=int64)
special variables
[0:0] :[]
dtype:dtype('int64')
max:'array is empty'
min:'array is empty'
shape:(0,)
size:0

np.array([], dtype=np.int64)

array([], dtype=int64)
special variables
[0:0] :[]
dtype:dtype('int64')
max:'array is empty'
min:'array is empty'
shape:(0,)
size:0

标签: pythonnumpyunit-testing

解决方案


我相信这与比较空数组的相等性有关。

空数组的真值是不明确的。

如果您查看比较结果,您会发现它不是 bool 值:

>>> np.array([], dtype=np.int64) == np.array([], dtype=np.int64)
array([], dtype=bool)

您是否考虑过/首先检查数组的长度?


推荐阅读