Как автоматически создать базу данных postgis для тестирования Django? - PullRequest
4 голосов
/ 24 июня 2009

Я пытаюсь протестировать свои приложения Django, которые работают в базе данных PostGIS, следуя информации в Документация по тестированию Django .

Обычно я создаю новую базу данных, копируя шаблон:

(как пользователь postgres)

createdb -T template_postgis -O lizard test_geodjango2

Когда я запускаю ./manage.py test, я получаю следующее сообщение:

Создание тестовой базы данных ... Произошла ошибка при создании тестовой базы данных: отказано в разрешении на создание базы данных

Введите 'yes', если вы хотите попробовать удалить тестовую базу данных 'test_geodjango2', или 'no', чтобы> отменить:

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

Ответы [ 2 ]

4 голосов
/ 24 июня 2009

Возможно, у вашего DATABASE_USER нет прав на создание новой базы данных / схемы.


Редактировать

Если вы прочитаете исходный код команды Django test, вы увидите, что она всегда создает тестовую базу данных. Кроме того, он изменяет ваши настройки для ссылки на эту тестовую базу данных.

См. Это: http://docs.djangoproject.com/en/dev/topics/testing/#id1

Что вы должны сделать, это использовать приспособления . Вот как мы это делаем.

  1. Из вашей базы данных шаблонов создайте «приспособление». Используйте команду manage.py dumpdata, чтобы создать файл JSON со всеми данными вашего шаблона. [Подсказка, опция --indent=2 дает вам читаемый JSON, который вы можете редактировать и изменять.]

  2. Поместите это в каталог fixtures под вашим приложением.

  3. Ссылка на файл фикстур в определении класса TestCase. Это загрузит прибор до запуска теста.

    class AnimalTestCase(TestCase):
        fixtures = ['mammals.json', 'birds']
        def testFluffyAnimals(self):
             etc.
    

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

2 голосов
/ 25 июня 2009

Как упоминалось в S.Lott, используйте стандартную команду test .

Используя geodjango с postgis, вам нужно добавить следующее в ваши настройки для правильного создания пространственных шаблонов.

settings.py

POSTGIS_SQL_PATH = 'C:\\Program Files\\PostgreSQL\\8.3\\share\\contrib'
TEST_RUNNER='django.contrib.gis.tests.run_tests'

Консоль

manage.py test

Описано здесь: http://geodjango.org/docs/testing.html?highlight=testing#testing-geodjango-apps

Я еще не изучал это, но когда я делаю это, мне предлагают пароль базы данных, когда он пытается установить необходимый sql.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...