繁体   English   中英

Heroku不允许我重命名数据库,因此无法运行Django单元测试?

[英]Heroku won't allow me to rename DB and thus can't run Django unit tests?

我正在尝试通过python manage.py test --settings="app.test-settings"运行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),

我发现此测试具有PostGIS数据库的GeoDjango应用程序,但由于没有权限,因此无法对“ template_postgis”进行任何更改。

我无法使用sqlite因为我有一些利用数据库的POSTGIS选项的模块。 通过错误杀死测试...

有没有一种方法可以避免炸毁Django源代码? 因为我需要能够在CircleCI上运行。

UPDATE

使用HEROKU进行这项工作并没有一个好方法。 目前,我已将所有内容仅在Circle CI上进行了测试。

一如既往的感谢!

确保您的方法正确。 持续集成是在将代码发送到生产环境之前进行测试的一种方式。 Heroku在其buildpack方面做得很好,但是它不是测试Web开发中“非常规”事物的好环境。

关于您在Heroku上的PostGIS上的问题,请查看Heroku文档中的以下注释:

PostGIS可以在公共beta中使用。 该Beta在所有生产层数据库上都可用,并且当前支持PostGIS 2.0版 它在“开发”或“基本爱好”等级计划中不可用 仅在2013年4月20日之后设置的Postgres 9.2数据库和所有Postgres 9.3数据库中才提供PostGIS。 要在连接到PostgreSQL 9.2数据库后启用PostGIS,请运行:CREATE EXTENSION postgis;

确保您没有使用高于2.0的版本并且未在开发或基本数据库环境上运行。

同样,恕我直言,您应该在circle-ci连续集成环境中执行此操作,然后将生成的工件推送到Heroku。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM