繁体   English   中英

如何为Django测试自动创建postgis数据库?

[英]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

你应该做的是使用固定装置 这是我们如何做到的。

  1. 从模板数据库中,创建一个“fixture”。 使用manage.py dumpdata命令创建包含所有模板数据的JSON文件。 [提示, - --indent=2选项为您提供可编辑和修改的可读JSON。]

  2. 把它放在你的应用程序下的fixtures目录中。

  3. 在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.

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