2011-01-26 31 views
18

Tôi xác định cơ sở dữ liệu sử dụng một đối tượng python:Chỉ định Django thử nghiệm tên cơ sở dữ liệu trong settings.py

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

Làm thế nào tôi có thể xác định tên của cơ sở dữ liệu thử nghiệm của tôi? Tôi đã cố gắng sử dụng TEST_NAME = 'auto_tests' trong tệp settings.py. Tuy nhiên, khi tôi chạy python manage.py tests <app_name> tôi nhận được thông báo sau:

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: 

tôi hy vọng hệ thống để tạo ra một cơ sở dữ liệu riêng biệt khi chạy thử nghiệm của tôi, có lẽ gọi là 'auto_tests_testsqldb'; tuy nhiên, nó vẫn hỏi tôi về test_testsqldb.

Bất kỳ lời khuyên nào được đánh giá cao!

Trả lời

26

Trong Django 1.6 trở xuống, TEST_NAME phải là chìa khóa của một trong các từ điển cơ sở dữ liệu của bạn. Nhưng trong Django 1.7 trở lên, bạn sử dụng khóa TEST là từ điển cài đặt cho cơ sở dữ liệu thử nghiệm.

Bạn có thể muốn:

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

Ngoài ra, có lẽ bạn đang muốn sử dụng một động cơ khác nhau cho các bài kiểm tra của bạn? Trong trường hợp đó, tôi nghĩ bạn sẽ chỉ phải tạo một tệp cài đặt riêng để thử nghiệm. Ứng dụng có thể nhập từ mô-đun cài đặt chuẩn của bạn và ghi đè DATABASES.

+1

+1 Cảm ơn bạn rất nhiều, phím TEST_NAME là những gì tôi đang tìm kiếm! Không nghĩ đến việc tìm trong tài liệu kiểm tra thông tin cài đặt. –

+0

Trong Django 1.10, đây là "TEST": {"NAME": "auto_tests"}, '(xem https://docs.djangoproject.com/en/dev/ref/settings/#test) – kd88

Các vấn đề liên quan