[英]How to automatically create postgis database for Django testing?
我正在尝试通过遵循Django测试文档中的信息来测试在PostGIS数据库上运行的Django应用程序。
通常我会通过复制模板来创建一个新数据库:
(作为用户postgres)
createdb -T template_postgis -O lizard test_geodjango2
当我运行./manage.py test
,我收到以下消息:
创建测试数据库...创建测试数据库时出错:拒绝创建数据库的权限
如果您想尝试删除测试数据库'test_geodjango2',或者'否'>取消,请键入“是”:
让系统创建数据库的最佳方法是什么?
可能是您的DATABASE_USER
无权创建新的数据库/架构。
编辑
如果您阅读Django test
命令的源代码,您将看到它始终创建一个测试数据库。 此外,它会修改您的设置以引用此测试数据库。
请参阅: http : //docs.djangoproject.com/en/dev/topics/testing/#id1
你应该做的是使用固定装置 。 这是我们如何做到的。
从模板数据库中,创建一个“fixture”。 使用manage.py dumpdata
命令创建包含所有模板数据的JSON文件。 [提示, - --indent=2
选项为您提供可编辑和修改的可读JSON。]
把它放在你的应用程序下的fixtures
目录中。
在TestCase类定义中引用fixtures文件。 这将在运行测试之前加载夹具。
class AnimalTestCase(TestCase): fixtures = ['mammals.json', 'birds'] def testFluffyAnimals(self): etc.
灯具会替换您的模板数据库。 拥有灯具后,您不再需要模板。
正如S.Lott所提到的,使用标准测试命令。
将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 = tesing #testing-geodjango-apps
我还没有调查过,但是当我这样做时,我会在尝试安装必要的sql时提示输入数据库密码。
从Django 1.11开始,Django支持仅Postgres设置settings.DATABASE[whatever]['TEST']['TEMPLATE']
,指示测试数据库的创建模板:
https://docs.djangoproject.com/en/dev/ref/settings/#template
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.