Opened 10 years ago
Last modified 23 months ago
#25504 new Bug
Django test teardown fails when there is no default database
| Reported by: | Sjoerd Langkemper | Owned by: | |
|---|---|---|---|
| Component: | Testing framework | Version: | 1.9 |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
When running a Django TestCase with an empty dict as default database, I get an error. This is similar to #24394, but happens at teardown of the test.
I installed Django 1.9a1, created a new project using django-admin startproject bug. I edited my settings.py to read this:
DATABASES = {
'default': {},
'other': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
And I added an empty testcase that uses the Django TestCase class like this:
from django.test.testcases import TestCase
class Test(TestCase):
def test_nothing(self):
pass
Then, when I do ./manage test I get the following stacktrace:
Traceback (most recent call last):
File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/test/testcases.py", line 217, in __call__
self._post_teardown()
File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/test/testcases.py", line 919, in _post_teardown
self._fixture_teardown()
File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/test/testcases.py", line 1072, in _fixture_teardown
return super(TestCase, self)._fixture_teardown()
File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/test/testcases.py", line 955, in _fixture_teardown
inhibit_post_migrate=inhibit_post_migrate)
File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 119, in call_command
return command.execute(*args, **defaults)
File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/core/management/base.py", line 399, in execute
output = self.handle(*args, **options)
File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/core/management/commands/flush.py", line 49, in handle
allow_cascade=allow_cascade)
File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/core/management/sql.py", line 15, in sql_flush
tables = connection.introspection.django_table_names(only_existing=True, include_views=False)
File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/db/backends/base/introspection.py", line 86, in django_table_names
existing_tables = self.table_names(include_views=include_views)
File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/db/backends/base/introspection.py", line 56, in table_names
with self.connection.cursor() as cursor:
File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 233, in cursor
cursor = self.make_cursor(self._cursor())
File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/db/backends/dummy/base.py", line 21, in complain
raise ImproperlyConfigured("settings.DATABASES is improperly configured. "
ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.
Change History (8)
comment:1 by , 10 years ago
| Component: | Uncategorized → Testing framework |
|---|---|
| Triage Stage: | Unreviewed → Accepted |
| Type: | Uncategorized → Bug |
comment:2 by , 10 years ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
comment:3 by , 10 years ago
comment:4 by , 10 years ago
| Version: | 1.9a1 → 1.9 |
|---|
comment:5 by , 9 years ago
mihaicc, can you share a link to your work so others could use it as a starting point if you're unable to finish it?
comment:6 by , 8 years ago
| Owner: | removed |
|---|---|
| Status: | assigned → new |
comment:7 by , 2 years ago
There seems to be a conflict in the documentation for this issue of a blank 'default' database. In the Settings docs, it says: "The DATABASES setting must configure a default database; any number of additional databases may also be specified."
But the multiple database setup docs still explicitly gives the example of leaving the 'default' database blank.
What's the path forward on this?
I didn't manage to finish this ticket.
Progress so far: