id summary reporter owner description type status component version severity resolution keywords cc stage has_patch needs_docs needs_tests needs_better_patch easy ui_ux 21277 "Running tests should not require ""real"" database" tobias9 nobody "I am trying to run tests against my django project prior to creating the ""real"" database used by my project. The database should not be necessary to exist to simply run tests, as it will create a test db named test_* (test_mydb in my example). This is really for the purposes of running tests in a Bamboo (or other CI) environment. This is on both a Linux Mint 15 desktop and a Ubuntu 13.04 Amazon Elastic Bamboo instance running Python 2.7.4, Django 1.5.4, and MySQL 5.5.32. MySQL database as specified in my settings.py: {{{ DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydb', 'USER': 'django', 'PASSWORD': 'topsecret', 'HOST': '', 'PORT': '', } } }}} Running the tests generates the following error/traceback (again, I have not created the database named 'mydb' at this point): {{{ > python manage.py test --traceback Creating test database for alias 'default'... Traceback (most recent call last): File ""/usr/local/lib/python2.7/dist-packages/django/core/management/base.py"", line 222, in run_from_argv self.execute(*args, **options.__dict__) File ""/usr/local/lib/python2.7/dist-packages/django/core/management/commands/test.py"", line 72, in execute super(Command, self).execute(*args, **options) File ""/usr/local/lib/python2.7/dist-packages/django/core/management/base.py"", line 255, in execute output = self.handle(*args, **options) File ""/usr/local/lib/python2.7/dist-packages/django/core/management/commands/test.py"", line 89, in handle failures = test_runner.run_tests(test_labels) File ""/usr/local/lib/python2.7/dist-packages/django/test/simple.py"", line 370, in run_tests old_config = self.setup_databases() File ""/usr/local/lib/python2.7/dist-packages/django/test/simple.py"", line 315, in setup_databases self.verbosity, autoclobber=not self.interactive) File ""/usr/local/lib/python2.7/dist-packages/django/db/backends/creation.py"", line 281, in create_test_db self._create_test_db(verbosity, autoclobber) File ""/usr/local/lib/python2.7/dist-packages/django/db/backends/creation.py"", line 343, in _create_test_db cursor = self.connection.cursor() File ""/usr/local/lib/python2.7/dist-packages/django/db/backends/__init__.py"", line 326, in cursor cursor = util.CursorWrapper(self._cursor(), self) File ""/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py"", line 406, in _cursor self.connection = Database.connect(**kwargs) File ""/usr/lib/python2.7/dist-packages/MySQLdb/__init__.py"", line 81, in Connect return Connection(*args, **kwargs) File ""/usr/lib/python2.7/dist-packages/MySQLdb/connections.py"", line 187, in __init__ super(Connection, self).__init__(*args, **kwargs2) OperationalError: (1049, ""Unknown database 'mydb'"") }}} Now, if I simply create the database 'mydb' without running syncdb (and/or migrate with south integration), the tests can run: {{{ > mysqladmin --user=root --password=veryverysecret create mydb }}} and then run the same command above it works: {{{ > python manage.py test --traceback Creating test database for alias 'default'... ..................................................................................................................................................s......................................................................................................................................x....................................................................................................................................................................................................... ---------------------------------------------------------------------- Ran 481 tests in 28.853s OK (skipped=1, expected failures=1) Destroying test database for alias 'default'... }}} " Bug closed Testing framework 1.5 Normal duplicate test mysql databases Unreviewed 0 0 0 0 0 0