2011-01-26 3 views
18

Je spécifiant les bases de données en utilisant un objet python:spécifier les noms de base de données de test Django dans settings.py

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

Comment puis-je spécifier le nom de ma base de données de test? J'ai essayé d'utiliser TEST_NAME = 'auto_tests' dans le fichier settings.py. Cependant, quand je lance python manage.py tests <app_name> je reçois le message suivant:

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: 

je prévois le système pour créer une base de données séparée lors de l'exécution de mes tests, probablement appelé « auto_tests_testsqldb »; Cependant, il me pose toujours des questions sur test_testsqldb.

Tout conseil est apprécié!

Répondre

26

Dans Django 1.6 et versions ultérieures, TEST_NAME doit être une clé de l'un de vos dictionnaires de base de données. Mais dans Django 1.7 et supérieur, vous utilisez une clé TEST qui est un dictionnaire de paramètres pour les bases de données de test.

Vous voulez probablement:

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

Sinon, peut-être vous êtes désireux d'utiliser un autre moteur pour vos tests? Dans ce cas, je pense que vous devrez juste créer un fichier de paramètres séparé pour le test. Il peut importer à partir de votre module de paramètres standard et remplacer DATABASES.

+1

+1 Merci beaucoup, la clé TEST_NAME est ce que je cherchais! N'a pas pensé à regarder dans la documentation de test pour les informations sur les paramètres. –

+0

Dans Django 1.10 c'est maintenant '" TEST ": {" NAME ":" auto_tests "},' (voir https://docs.djangoproject.com/en/dev/ref/settings/#test) – kd88

Questions connexes