如何自动创建用于 Django 测试的 postgis 数据库?

Jac*_* Ha 5 python django unit-testing

我正在尝试按照Django testing docs 中的信息测试在 PostGIS 数据库上运行的 Django 应用程序。

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

(作为用户 postgres)

createdb -T template_postgis -O lizard test_geodjango2
Run Code Online (Sandbox Code Playgroud)

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

正在创建测试数据库...创建测试数据库时出错:创建数据库的权限被拒绝

如果您想尝试删除测试数据库“test_geodjango2”,请键入“yes”,或者键入“no”以>取消:

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

S.L*_*ott 4

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


编辑

如果您阅读 Django 命令的源代码test,您会发现它总是创建一个测试数据库。此外,它还会修改您的设置以引用此测试数据库。

请参阅: http: //docs.djangoproject.com/en/dev/topics/testing/#id1

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

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

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

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

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

灯具取代您的模板数据库。有了固定装置后,您就不再需要模板了。