Понимание чьего-либо кода и соблюдение этого:
Существует функция:
def some_func():
print("Hello")
assert(len(y)==len(p))
print("First assert")
assert(p.all()<=0.99999)
print("Second assert")
return 1
Далее вызывается assert_raises:
np.testing.assert_raises(AssertionError, some_func, np.asarray([1, 2, 3]), np.asarray([1, 2, 3, 4, 5]))
В результате мы простополучить Hello без сообщений об исключениях:
Hello
Далее, вызвать функцию assert_array_less:
np.testing.assert_array_less(some_func(np.asarray([1, 2, 3]), np.asarray([1, 2, 3])), np.inf)
В выводе мы получаем Hello First assert, а затем сообщение об ошибке и исключение AssertionError:
Hello
First assert
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-26-df1a32b4f5a0> in <module>()
9 np.testing.assert_raises(AssertionError, some_func, np.asarray([1, 2, 3]), np.asarray([1, 2, 3, 4, 5]))
10
---> 11 np.testing.assert_array_less(some_func(np.asarray([1, 2, 3]), np.asarray([1, 2, 3])), np.inf)
<ipython-input-26-df1a32b4f5a0> in some_func(a, b)
3 assert(len(a)==len(b))
4 print("First assert")
----> 5 assert(a.all()<=0.99999)
6 print("Second assert")
7 return 1
AssertionError:
Вопрос:
Почему в 1 случае код просто останавливается и никакие исключения не генерируются, хотя он вызывается first assert в some_func ()?
А почему во втором не происходит так же, как в первом, и выдается исключение?