np.testing.assert_array_less()
测试严格的不平等性:
In [1]: np.testing.assert_array_less(1., 1.)
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-1-ea8ee0b762c3> in <module>()
----> 1 np.testing.assert_array_less(1., 1.)
AssertionError:
Arrays are not less-ordered
显然,没有参数可以测试非严格不等式。
如何仍然依靠np.testing来解释其可解释的错误消息来对此进行测试? (我想避免使用assert (a <= b).all()
)
答案 0 :(得分:1)
您注意到,显然非严格不平等不在numpy.testing
中定义的测试用例之内。另外,没有记录方法可以扩展numpy.testing
并包含更多测试用例。
从源头上看,很明显可以使用assert_array_compare
来滚动自己的测试用例:
import operator
def assert_array_less_equal(x, y, err_msg='', verbose=True):
from numpy.testing import assert_array_compare
__tracebackhide__ = True # Hide traceback for py.test
assert_array_compare(operator.__le__, x, y, err_msg=err_msg,
verbose=verbose,
header='Arrays are not equal or less-ordered')
>>> assert_array_less_equal(1., 1.)
>>> assert_array_less_equal(1.1, 1.)
.
.
.
AssertionError:
Arrays are not equal or less-ordered
(mismatch 100.0%)
x: array(1.1)
y: array(1.)
但是,如上所述,assert_array_compare
未记录,而是numpy.testing
中的辅助函数。因此,我猜想numpy
更新时,它可能会随时更改和更新,而没有任何通知。这可能会无声地破坏您的代码。