2011-01-26 6 views
18

sto specificando le basi di dati utilizzando un oggetto python:specificare i nomi di database Django prova a settings.py

DATABASES = { 
'default':{ 
    'ENGINE':'mysql', 
    'NAME':'testsqldb', 
    'USER':'<username>', 
    'PASSWORD':'<password>', 
}, 
'dynamic_data':{ 
    'ENGINE': 'sqlite3', 
    'NAME':'', 
    'USER':'', 
    'PASSWORD':'' 
}, 
} 

Come faccio a specificare il nome del mio database di prova? Ho cercato di utilizzare TEST_NAME = 'auto_tests' nel file settings.py. Tuttavia, quando ho eseguito python manage.py tests <app_name> ricevo il seguente messaggio:

Creating test database 'default'... 
Got an error creating the test database: (1007, "Can't create database 'test_testsqldb'; database exists") 
Type 'yes' if you would like to try deleting the test database 'test_testsqldb', or 'no' to cancel: 

mi aspetto il sistema per creare un database separato durante l'esecuzione di mio test, presumibilmente chiamato 'auto_tests_testsqldb'; tuttavia, mi sta ancora chiedendo di test_testsqldb.

Qualsiasi consiglio è apprezzato!

risposta

26

In Django 1.6 e versioni successive, TEST_NAME dovrebbe essere la chiave di uno dei dizionari del database. Ma in Django 1.7 e versioni successive, si utilizza una chiave TEST che è un dizionario di impostazioni per i database di test.

Probabilmente si desidera:

DATABASES = { 
'default':{ 
    'ENGINE':'mysql', 
    'NAME':'testsqldb', 
    'USER':'<username>', 
    'PASSWORD':'<password>', 
    'TEST': { 
     'NAME': 'auto_tests', 
    } 
}, 
'dynamic_data':{ 
    'ENGINE': 'sqlite3', 
    'NAME':'', 
    'USER':'', 
    'PASSWORD':'' 
}, 
} 

In alternativa, forse si vogliono utilizzare un motore diverso per i test? In tal caso, penso che dovrai solo creare un file di impostazioni separato per i test. Può importare dal modulo delle impostazioni standard e sovrascrivere DATABASES.

+1

+1 Grazie mille, il tasto TEST_NAME è quello che stavo cercando! Non ho pensato di consultare la documentazione di test per le informazioni sulle impostazioni. –

+0

In Django 1.10 questo è ora '" TEST ": {" NAME ":" auto_tests "},' (vedere https://docs.djangoproject.com/en/dev/ref/settings/#test) – kd88