mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-10 19:56:59 +03:00
Be more informative when reporting import errors.
This commit is contained in:
parent
152e6d5c0a
commit
c736b80290
|
@ -115,8 +115,8 @@ def import_from_string(val, setting_name):
|
|||
module_path, class_name = '.'.join(parts[:-1]), parts[-1]
|
||||
module = importlib.import_module(module_path)
|
||||
return getattr(module, class_name)
|
||||
except:
|
||||
msg = "Could not import '%s' for API setting '%s'" % (val, setting_name)
|
||||
except ImportError as e:
|
||||
msg = "Could not import '%s' for API setting '%s'. %s: %s." % (val, setting_name, e.__class__.__name__, e)
|
||||
raise ImportError(msg)
|
||||
|
||||
|
||||
|
|
0
rest_framework/tests/extras/__init__.py
Normal file
0
rest_framework/tests/extras/__init__.py
Normal file
1
rest_framework/tests/extras/bad_import.py
Normal file
1
rest_framework/tests/extras/bad_import.py
Normal file
|
@ -0,0 +1 @@
|
|||
raise ValueError
|
21
rest_framework/tests/settings.py
Normal file
21
rest_framework/tests/settings.py
Normal file
|
@ -0,0 +1,21 @@
|
|||
"""Tests for the settings module"""
|
||||
from django.test import TestCase
|
||||
|
||||
from rest_framework.settings import APISettings, DEFAULTS, IMPORT_STRINGS
|
||||
|
||||
|
||||
class TestSettings(TestCase):
|
||||
"""Tests relating to the api settings"""
|
||||
|
||||
def test_non_import_errors(self):
|
||||
"""Make sure other errors aren't suppressed."""
|
||||
settings = APISettings({'DEFAULT_MODEL_SERIALIZER_CLASS': 'rest_framework.tests.extras.bad_import.ModelSerializer'}, DEFAULTS, IMPORT_STRINGS)
|
||||
with self.assertRaises(ValueError):
|
||||
settings.DEFAULT_MODEL_SERIALIZER_CLASS
|
||||
|
||||
def test_import_error_message_maintained(self):
|
||||
"""Make sure real import errors are captured and raised sensibly."""
|
||||
settings = APISettings({'DEFAULT_MODEL_SERIALIZER_CLASS': 'rest_framework.tests.extras.not_here.ModelSerializer'}, DEFAULTS, IMPORT_STRINGS)
|
||||
with self.assertRaises(ImportError) as cm:
|
||||
settings.DEFAULT_MODEL_SERIALIZER_CLASS
|
||||
self.assertTrue('ImportError' in str(cm.exception))
|
Loading…
Reference in New Issue
Block a user