2015-01-22 2 views
0

Я пытаюсь запустить тесты Django через python manage.py test --settings="app.test-settings"Heroku не разрешит мне переименовывать DB и, следовательно, не может запускать модульные тесты Django?

Настройки файла Ниже

#Testing On Heroku DB 
from changeaddress.settings import * 
import dj_database_url 
TEST_DATABASES = { 
    'default': dj_database_url.parse(os.getenv('TEST_DATABASE_URL')) 
} 
TEST_DATABASES['default']['ENGINE'] = 'django.contrib.gis.db.backends.postgis' 
REDIS_CACHE_TYPE = None 
POSTGIS_VERSION = (2, 0, 3) 
TEST_RUNNER = 'changeaddress.test_suite_runner.HerokuTestSuiteRunner' 

При запуске теста я получаю вышеуказанную ошибку.

File "C:\Python27\lib\site-packages\django\db\utils.py", line 99, in 
__exit__ six.reraise(dj_exc_type, dj_exc_value, traceback) 
File "C:\Python27\lib\site-packages\django\db\backends\util.py", line 51, 
in execute return self.cursor.execute(sql) 
django.db.utils.ProgrammingError: type "geography" does not exist LINE 17: "area" geography(MULTIPOLYGON,4326), 

Я нашел это Testing a GeoDjango app with a PostGIS database, но я не в состоянии делать какие-либо изменения в «template_postgis», как я не имею права.

Я не могу использовать sqlite, потому что у меня есть модули, которые используют опции POSTGIS для db. Что из-за ошибок и убить тесты ...

Есть ли способ сделать это, не взорвав исходный код Django? Как мне нужно, чтобы это можно было запустить на CircleCI.

UPDATE

Существует не хороший способ, чтобы сделать эту работу с Heroku. На данный момент я поставил все, чтобы тестироваться только на Circle CI.

Как всегда спасибо!

ответ

1

Уверенный, что вы на правильном пути. Непрерывная интеграция - это способ протестировать ваш код, прежде чем отправлять его на производство. Heroku проделал отличную работу со своими сборными, но это не хорошая среда для тестирования вещей, которые не являются «обычными» для веб-разработки.

О вашей проблеме на PostGIS на Heroku, смотрите этот комментарий от Heroku документации:

PostGIS доступен в публичных бета-версии. Бета доступна на всех Базах данных уровня производства, а в настоящее время поддерживает PostGIS версии 2.0. Он не доступен на планах Dev или Basic Hobby. PostGIS - , доступный только с базами данных Postgres 9.2, предоставленными после 20 апреля 2013 года и всей базы данных Postgres 9.3. Чтобы включить PostGIS после подключения к вашему запуску базы данных PostgreSQL 9.2: CREATE EXTENSION postgis;

Убедитесь, что вы не используете версию выше 2.0 и не работаете в среде разработки или базовой базы данных.

Опять же, ИМХО, вы должны сделать это на окружной непрерывной интеграционной среде, а затем протолкнуть полученные артефакты в Heroku.

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