2011-01-26 11 views
18

jestem określające baz danych za pomocą obiektu Pythona:Określ Django testowe nazwy bazy danych w settings.py

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

Jak mogę podać nazwę mojej bazy testowej? Próbowałem użyć TEST_NAME = 'auto_tests' w pliku settings.py. Jednak, gdy biegnę python manage.py tests <app_name> pojawia się następujący komunikat:

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: 

Czekam systemu, aby utworzyć oddzielną bazę danych podczas uruchamiania moich testów, prawdopodobnie o nazwie „auto_tests_testsqldb”; jednak wciąż pyta mnie o test_testsqldb.

Każda rada jest doceniana!

Odpowiedz

26

W Django 1.6 i poniżej kluczem jednego ze słowników bazy danych powinno być TEST_NAME. Ale w Django 1.7 i wyżej używasz klucza TEST, który jest słownikiem ustawień dla testowych baz danych.

Prawdopodobnie chcesz:

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

Alternatywnie, może jesteś chcąc użyć innego silnika do swoich badań? W takim przypadku, myślę, że po prostu trzeba będzie stworzyć oddzielny plik ustawień do testowania. Można go importować ze standardowego modułu ustawień i zastępować DATABASES.

+1

+1 Dziękuję bardzo, klucz TEST_NAME jest tym, czego szukałem! Nie pomyślałem o zapoznaniu się z dokumentacją testową w celu uzyskania informacji o ustawieniach. –

+0

W Django 1.10 jest to teraz "TEST": {"NAME": "auto_tests"}, '(zobacz https://docs.djangoproject.com/en/dev/ref/settings/#test) – kd88