Django unittest只读测试数据库

Mat*_*hew 12 python django unit-testing django-1.5

我必须在这里忽略这一点.我正在使用django 1.5.x并正在创建基于djangos TestCase类的单元测试.我在设置中定义了一堆数据库,因为我从很多不同的源中提取(只读).运行测试时我只想创建我的默认数据库的测试版本,其余我想要标记为只读而不尝试重新创建为test_db_name(用户定义的不会(不能)拥有创建这些权限的权限无论如何dbs).

当然这是可能的 - 正如我所说,我必须错过显而易见的事情?

感谢任何帮助.

马修

Jos*_*osh 3

不明显,不。 排序记录,您可以设置测试时使用的数据库名称:

设置.py

DATABASES = {
  'default': {
    'ENGINE': 'django.contrib.gis.db.backends.spatialite',
    'NAME': 'db.sqlite3',
    'TEST_NAME': '/tmp/test.sqlite3',
  },
}
Run Code Online (Sandbox Code Playgroud)

如果您不想构建(或重建)测试数据库,则需要将数据库名称复制到 TEST_NAME 中,并使用新python manage.py test --keepdb命令保持数据库完好无损,而不是让 Django 尝试在运行之间删除它。截至 2014 年 6 月,您必须升级到 Django 开发版本才能访问此功能;最终这将出现在稳定版本中。据我了解,这样做的缺点是,它适用于所有数据库,而不仅仅是只读数据库。

  • 对于我们许多人来说,问题是整个主机对于其中一些辅助数据库来说是只读的。指定不同的数据库名称没有帮助。 (3认同)
  • 谢谢,但我想我们已经越界了?!我的问题不是我想控制创建的任何测试数据库的名称,而是我根本不想创建测试数据库,默认情况除外。因此,我希望我的测试使用测试设置中列出的数据库,而不是旋转空白副本,因为它是只读的,并提供我在测试中需要的记录。 (2认同)