为什么不存在numpy.testing.assert_array_greater,assert_array_less_equal,assert_array_true等?

时间:2017-08-31 18:30:41

标签: unit-testing numpy

numpy.testing中,有assert_array_lessassert_array_equal,但没有assert_array_less_equal功能,甚至没有assert_array_greater。我有两个问题:

  1. 是否缺少这些功能,但assert_array_less不是?
  2. 我使用numpy.testing.util.assert_array_compare编写了这些缺失函数的自己版本,例如:
  3. def assert_array_greater(aa, bb):
      assert_array_compare(np.greater, aa, bb)
    

    这样安全吗?即有assert_array_compare隐藏在numpy.testing.util中而不是住在numpy.testing中的原因?

    原谅我的偏执狂;这些功能不存在似乎很奇怪,在某种程度上我担心我不应该解决这个问题。

1 个答案:

答案 0 :(得分:3)

np.testing是一个模块,用于收集各种numpy单元测试文件使用的测试和工具。所以它的设计更多是供内部使用,而不是最终用户使用。所以简单的答案就是不需要那些额外的测试。

但是查看其中一个函数的源代码:

def assert_array_less(x, y, err_msg='', verbose=True):
    assert_array_compare(operator.__lt__, x, y, err_msg=err_msg,
                         verbose=verbose,
                         header='Arrays are not less-ordered',
                         equal_inf=False)

使用其他operator方法之一编写变体似乎很容易。

np.testing的“根”是numpy/testing/__init__.py,这是一个短文件。看起来它的主要任务是from .utils import *。这是典型的子包装组织。 __init__收集必要的导入,但通常没有自己的重要代码。