2011-01-26 18 views
18
settings.py

yılında Django Testi Veritabanı isimleri belirtin? Settings.py dosyasında TEST_NAME = 'auto_tests' kullanmayı denedim. Ben çalıştırdığınızda, ancak python manage.py tests <app_name> şu mesajı alıyorum:Bir piton nesnesini kullanarak veritabanlarını belirterek ediyorum

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: 

benim testleri çalıştırırken ayrı veritabanı oluşturmak için sistemin bekliyorum, muhtemelen 'auto_tests_testsqldb' olarak adlandırılan; Ancak, hala bana test_testsqldb hakkında soru soruyor.

Herhangi bir tavsiye memnuniyetle karşılanır!

cevap

26

Django 1.6 ve altında, TEST_NAME veritabanı sözlüklerinizden birinin anahtarı olmalıdır. Fakat Django 1.7 ve üstü sürümlerde, test veritabanlarının ayarlarının bir sözlük olan bir TEST anahtarını kullanıyorsunuz.

Muhtemelen istiyorum:

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

Alternatif olarak, belki de testler için farklı bir motor kullanmak isteyen vardır? Bu durumda, test için ayrı bir ayar dosyası oluşturmanız gerektiğini düşünüyorum. Standart ayar modülünüzden içe aktarılabilir ve DATABASES'u geçersiz kılabilir.

+1

+1 Çok teşekkür ederim, TEST_NAME anahtarı aradığım şey! Ayarlar bilgisi için test belgelerine bakmayı düşünmüyordu. –

+0

Django 1.10'da bu şimdi "TEST": {"NAME": "auto_tests"}, '(https://docs.djangoproject.com/en/dev/ref/settings/#test adresine bakın) – kd88