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

标签 python numpy unit-testing

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

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

AssertionError: array([], dtype=int64) != array([], 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

最佳答案

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

The truth value of an empty array is ambiguous.

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

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

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

关于python - 断言错误 : array([], dtype=int64) != 数组([], dtype=int64),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68986819/

相关文章:

python - django命名空间NoReverseMatch

python - fnmatch 和递归路径与 `**` 匹配

python - 取决于前一个轴的索引的数组切片最大值

java - 带换行符的 Bash 输入重定向

c# - 如果测试失败,TestCleanUp 中的条件行为

database - Symfony 3为单元测试创​​建数据库

python - 从 python 32 位到 python 64 位

python - 模型训练时间较长

numpy - Python numpy 矩阵乘法与一个对角矩阵

python - 使用 Flask 和 sqlalchemy 插入到 Db2