如何设置Django在Travis CI上运行PostgreSQL上的测试?

时间:2014-08-03 20:42:53

标签: python django postgresql heroku travis-ci

我似乎无法弄清楚如何将我当前的Django项目集成到Travis CI上运行测试。现在我在运行单元测试时将PostgreSQL设置为在我的本地机器上运行。

language: python
python:
  - 3.4.1
addons:
  postgresql: "9.3"
before_script:
- psql -U postgres -c "create extension postgis"
  - psql -c 'create database travis_ci_test;' -U postgres
install:
  - pip install -r requirements.txt
  - pip install coveralls
script:
  coverage run --source=calculator manage.py test
after_success:
  coveralls

特拉维斯告诉我:

$ coverage run --source=calculator manage.py test
Creating test database for alias 'default'...
Got an error creating the test database: permission denied to create database
Type 'yes' if you would like to try deleting the test database 'test_dk5va592r6j0v', or 'no' to cancel: 

现在我有一个hacky设置来处理本地数据库和我的heroku db之间的切换:

import dj_database_url

if DEBUG:
    DATABASE_URL = 'postgres://localhost/storage'
else:
    DATABASE_URL = 'postgres://somerealurl'
DATABASES = {'default': dj_database_url.config(default=DATABASE_URL)}

有没有人有办法解决我的问题?看来我需要能够在Travis上创建PostgreSQL,然后运行我的测试以便我可以获得覆盖。每当检入代码时,调试也必须设置为False。

如果您可以发布一个非常棒的Travis,DJango和PSQL设置!

1 个答案:

答案 0 :(得分:1)

我所做的并且对我来说是成功的是将DATABASE_URL设置为环境变量并且仅使用
DATABASES = {'default': dj_database_url.config(default=DATABASE_URL)} 在代码中将优雅地从本地切换到生产。

这是一个使用Postgres,Django并在Heroku上部署的工作travis配置。

https://github.com/kevgathuku/sermonbuddy/blob/master/.travis.yml