python - 断言错误:数组([],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
解决方案
我相信这与比较空数组的相等性有关。
空数组的真值是不明确的。
如果您查看比较结果,您会发现它不是 bool 值:
>>> np.array([], dtype=np.int64) == np.array([], dtype=np.int64)
array([], dtype=bool)
您是否考虑过/首先检查数组的长度?
推荐阅读
- .net - CORS 策略:对预检请求的响应未通过访问控制检查:预检请求不允许重定向 - AWS CloudFront
- npm - 如何在尊重 package-lock.json 的同时“npm install packageX”
- javascript - CSS 文件不会链接到 HTML
- jquery - 无法使用 appendTo 在另一个中插入元素
- c# - 有没有一种从 JSON 字符串中获取 Manatee.JsonObject 的简单方法?
- javascript - 在 fetch 中捕获错误无法正常工作
- sql - T-SQL - 在 SELECT 语句期间设置变量
- apache-spark - 保存的随机森林模型在同一数据集上产生不同的结果
- python - 当我在管道上尝试 LabelEncoder 时,为什么管道会抛出 FitFailedWarining?
- php - 将编辑后的数据发送到数据表底部