
Эксперт
  
Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005
Репутация: 1 Всего: 48
|
Доброе время суток! Разрабатываю проект в django. По логике, требуется проверить некоторое условие и выводить ошибку 404 в случае, если условие не соблюдается. Пишу тест: | Код | def test_check_all_unspecified_pages_for_inaccessability(self): # логинимся login = self.client.login(username=self.usr_name, password=self.usr_pswd) self.assertEquals(login, True) uspecified_models = set(all_models) - set(models)
codes = {404, } for m in uspecified_models: response = self.client.post(self.root + m + '/', {}) self.assertTrue(response.status_code in codes, "%s доступен, хотя не должен быть" % m) self.client.logout()
|
Реализую: | Код | def check_the_entity(self, entity_name): # проверяем, что сущность есть в списке сущностей - иначе выводим ошибку 404 if not entity_name in self.USED_MODELS: raise Http404
|
Однако при запусте тестов, появляется ошибка | Код | AttributeError: 'module' object has no attribute 'handler500'
|
| Код | Traceback (most recent call last): File "/home/alesha/development/web/simsim-nn/simsim/service/tests/techalanyst_tests.py", line 72, in test_check_all_unspecified_pages_for_inaccessability response = self.client.post(self.root + m + '/', {}) File "/usr/lib/python2.7/site-packages/django/test/client.py", line 330, in post response = self.request(**r) File "/usr/lib/python2.7/site-packages/django/test/client.py", line 238, in request response = self.handler(environ) File "/usr/lib/python2.7/site-packages/django/test/client.py", line 79, in __call__ response = self.get_response(request) File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 130, in get_response return self.handle_uncaught_exception(request, resolver, sys.exc_info()) File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 179, in handle_uncaught_exception callback, param_dict = resolver.resolve500() File "/usr/lib/python2.7/site-packages/django/core/urlresolvers.py", line 263, in resolve500 return self._resolve_special('500') File "/usr/lib/python2.7/site-packages/django/core/urlresolvers.py", line 253, in _resolve_special callback = getattr(self.urlconf_module, 'handler%s' % view_type) AttributeError: 'module' object has no attribute 'handler500'
|
Просто так если проверять, то все работает, как надо - при написании в браузере неверных имен, появляется ошибка 404. Гуглил, так ничего и не нагуглил - в одном случае писали, что надо явно импортировать handler500, handler404 в urlconf. Попробовал: | Код | from django.conf.urls.defaults import patterns, url, include, handler500, handler404 from simsim.service.view import generic_urls, techanalyst
urlpatterns = patterns('simsim.service.views', url(r'^$', "index", name='index'),
url(r'^login/$', "user_login", name="login"), url(r'^try/$', "try_pswd", name='try_pswd'), url(r'^logout/$', "user_logout", name='user_logout'), url(r'^generic/', include(generic_urls.urls)), url(r'^techanalyst/', include(techanalyst.urls)), )
#error_patterns = patterns('', # url(r'^404$', handler404, name='handler404'), # url(r'^500$', handler500, name='handler500'), #) # #urlpatterns += error_patterns
|
Последняя строка закомментирована, однако при проверке я туда что только не подставлял - и 404, 500 в качестве имен, и handler404, handler500. Так и не заставил работать. Может, кто сталкивался с подобным. (self.client.get(self.root + m + '/', {}) тоже пробовал)
|