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

2024-10-01 17:21:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着测试我在PostGIS数据库上运行的Django应用程序,方法是遵循Django testing docs中的信息。在

通常我通过复制模板来创建新数据库:

(作为用户postgres)

createdb -T template_postgis -O lizard test_geodjango2

当我运行./manage.py test时,我收到以下消息:

Creating test database... 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_geodjango2', or 'no' to > cancel:

让系统创建数据库的最佳方法是什么?在


Tags: thetodjango方法用户test模板信息
3条回答

正如S.Lott所提到的,使用标准的test命令。在

使用geodjango和postgis,您需要将以下内容添加到您的设置中,以便正确创建空间模板。在

设置.py

POSTGIS_SQL_PATH = 'C:\\Program Files\\PostgreSQL\\8.3\\share\\contrib'
TEST_RUNNER='django.contrib.gis.tests.run_tests'

控制台

^{pr2}$

此处描述: http://geodjango.org/docs/testing.html?highlight=testing#testing-geodjango-apps

我还没有研究它,但是当我这样做时,当它试图安装必要的sql时,会提示我输入数据库密码。在

从Django 1.11开始,Django支持Postgres-only设置settings.DATABASE[whatever]['TEST']['TEMPLATE'],该设置指示从哪个模板创建测试数据库:

https://docs.djangoproject.com/en/dev/ref/settings/#template

可能是您的DATABASE_USER没有创建新数据库/架构的权限。在


编辑

如果您阅读了Djangotest命令的源代码,您将看到它总是创建一个测试数据库。此外,它会修改您的设置以引用此测试数据库。在

看这个:http://docs.djangoproject.com/en/dev/topics/testing/#id1

您应该使用fixtures。下面是我们的方法。在

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

  2. 将其放入应用程序下的fixtures目录中。

  3. 引用TestCase类定义中的fixture文件。这将在运行测试之前加载夹具。在

    class AnimalTestCase(TestCase):
        fixtures = ['mammals.json', 'birds']
        def testFluffyAnimals(self):
             etc.
    

固定装置将替换样板数据库。一旦有了固定装置,就不再需要模板了。在

相关问题 更多 >

    热门问题