2015-05-12 3 views
4

Я работаю в Django 1.8. У меня есть команда управления Django для создания материализованных представлений на моей базе данных, следующим образом:Django: Как получить доступ к тестовой базе данных?

python manage.py create_db_matviews $DB_NAME $DB_USER $DB_PASS 

Теперь я хочу, чтобы выполнить команду управления внутри моих тестов, так что я могу проверить команду. (Моя фактическая база данных чрезвычайно велика, и команда управления очень медленная, поэтому я бы хотел протестировать ее на тестовых данных, а не на реальных данных.)

Однако вызов команды управления из моего тестового файла не работает - неудивительно, так как я понятия не имею, какие полномочия использовать:

def setUpModule(): 
    management.call_command('loaddata', 'frontend/fixtures/mydata.json', 
         verbosity=0) 
    # load fixtures, then... 
    management.call_command('create_db_matviews', 
          'default', 'default', 'randomguess', 
          verbosity=0) 

Он терпит неудачу следующим образом:

Creating test database for alias 'default' ('test_prescribing')... 
... running migrations... 
====================================================================== 
ERROR: setUpModule (frontend.tests.test_api_views) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/Users/.../tests/test_api_views.py", line 23, in setUpModule 
    verbosity=0) 
    File "/Users/.../.virtualenvs/openprescribing/lib/python2.7/site-packages/django/core/management/__init__.py", line 115, in call_command 
    return klass.execute(*args, **defaults) 
    File "/Users/.../.virtualenvs/openprescribing/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute 
    output = self.handle(*args, **options) 
    File "/Users/.../frontend/management/commands/create_indexes_and_matviews.py", line 19, in handle 
    password=db_pass) 
    File "/Users/.../.virtualenvs/openprescribing/lib/python2.7/site-packages/psycopg2/__init__.py", line 164, in connect 
    conn = _connect(dsn, connection_factory=connection_factory, async=async) 
OperationalError: FATAL: role "default" does not exist 

какие документы я должен использовать, чтобы получить доступ к тестовой базе данных?

ответ

1

This section of the Django docs имеет свои данные.

В основном имя тестовой базы данных соответствует вашему файлу настроек, но с префиксом test_, а пользователь и пароль являются вашими настройками.

Смежные вопросы