Тестирование на нестрогое неравенство с np.testing - PullRequest
0 голосов
/ 18 сентября 2018

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())

1 Ответ

0 голосов
/ 18 сентября 2018

Как вы заметили, явно нестрогое неравенство не входит в число определенных тестовых случаев в 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.Это потенциально может молча сломать ваш код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...