У меня есть единичный тест FAIL (Django) FAIL из исключения, но код ошибки находится в блоке try / исключением, написанном для этого исключения. Подобный блок обрабатывает исключение, когда оно непосредственно вызывается.
Это проходит:
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Code catches a directly raised ImmediateHttpResponse
try:
raise ImmediateHttpResponse(response=auth_result)
self.fail()
except ImmediateHttpResponse, e:
self.assertTrue(True)
Это, сразу же после этого, терпит неудачу:
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# FAIL
try:
resp = resource.dispatch_list(request) #<--- Line 172
self.fail()
except ImmediateHttpResponse, e:
self.assertTrue(True)
Вот след:
Traceback (most recent call last):
File ".../web_app/tests/api/tastypie_authentication.py", line 172, in test_dispatch_list_diagnostic
resource.dispatch_list(request)
File ".../libraries/django_tastypie/tastypie/resources.py", line 410, in dispatch_list
return self.dispatch('list', request, **kwargs)
File ".../libraries/django_tastypie/tastypie/resources.py", line 434, in dispatch
self.is_authenticated(request)
File ".../libraries/django_tastypie/tastypie/resources.py", line 534, in is_authenticated
raise ImmediateHttpResponse(response=auth_result)
ImmediateHttpResponse
В соответствии с трассировкой вызов dispatch_list () завершается ошибкой, поскольку он вызывает исключение << ImmediateHttpResponse >>. Но размещение именно такого исключения в блоке try не приводит к аналогичной ошибке.
Почему блок try / исключением обрабатывает одно исключение, а не другое?
Обратите внимание, что тестовый код скопирован из тестового кода библиотеки, который работает должным образом. (Я использую тестовый код библиотеки для диагностики моих собственных ошибок реализации.)