【发布时间】:2019-12-07 01:06:54
【问题描述】:
我想通过比较两个元组作为一个整体来执行单元测试,而不是逐个元素。 元组涉及 int 和布尔值列表。列表的长度因我的实际情况而异。为简单起见,出于演示目的,我将列表的长度固定为 2。 所以我要单元测试的函数给出的输出格式如下:
A = some_function(input)
where
$ some_function(input)
> (array([ True, True]), array([ True, False]), 2)
我尝试通过创建 B 来对 A 进行单元测试,如下所示:
B = (np.array([True, True]), np.array([True, False]), 2)
我尝试了以下方法,但都返回 False 而不是 True,正如我所期望的那样。为什么?我该如何解决?
np.array_equal(A,B)
> False
np.array_equiv(A,B)
> False
A==B
>ValueError Traceback (most recent call last)
<ipython-input-125-2c88eac8e390> in <module>
1 A=_tokenwise_to_entitywise(ref,hyp)
----> 2 B== (np.array([True,True]), np.array([True,False]), 2)
3
4 A==B
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
【问题讨论】:
-
A == B到底有什么问题? -
顺便说一下,这些是元组,而不是数组
-
我无法复制
np.array_equal(A,B)或np_array_equiv(A,B)返回False。我得到了True。
标签: python numpy unit-testing