3

我正在尝试为我的模块编写测试。当我运行时:

python manage.py test my_module

我收到消息:

django.core.exceptions.ImproperlyConfigured: Please fill out the database NAME in the settings module before using the database.

我还没有任何测试,只有 BaseTest,我在其中创建用户、组和分配权限。

问题可能出在哪里?服务器正常工作,配置似乎不错。我需要定义测试设置吗?


行。我想我知道问题出在哪里:] 我有存储在其他模块中的权限列表。所以我在写from module.perms import perms(普通的python列表)。看起来,python 所做的不仅仅是将该列表从其他模块导入到我的模块中。这就是失败的原因。

解决方案: 列表定义后的环绕代码:

if __name__ == "__main__":
   ...

那么一切都应该运行良好。

4

4 回答 4

1

行。我想我知道问题出在哪里:] 我有存储在其他模块中的权限列表。所以我是从 module.perms import perms (普通的 python 列表)写的。看起来,python 所做的不仅仅是将该列表从其他模块导入到我的模块中。这就是失败的原因。

解决方案:列表定义后的环绕代码:

if __name__ == "__main__":
   ...

那么一切都应该运行良好。

于 2013-02-01T11:01:02.897 回答
0

您需要在 settings.py 中设置您的 DATABASE 设置,并且您的应用程序需要在已安装的应用程序中。例如:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'database.sqlite',
于 2013-01-29T10:49:22.523 回答
0

python manage.py test不使用NAMEsettings.py 中定义的数据库DATABASES。从文档-

需要数据库的测试(即模型测试)不会使用您的“真实”(生产)数据库。为测试创建单独的空白数据库。

无论测试通过还是失败,测试数据库都会在所有测试执行完毕后销毁。

默认情况下,测试数据库通过将 test_ 添加到 DATABASES 中定义的数据库的 NAME 设置的值来获取它们的名称。当使用 SQLite 数据库引擎时,测试将默认使用内存数据库(即,数据库将在内存中创建,完全绕过文件系统!)。如果要使用不同的数据库名称,请在字典中为 DATABASES 中的任何给定数据库指定 TEST_NAME。

回答你的问题。TEST_NAME 您可以使用设置定义测试数据库。但你不应该这样做。

于 2013-01-29T11:33:00.560 回答
0

这是人们通过搜索找到此问题的另一种潜在解决方案:

我试图TestRunner在我的设置文件中定义我自己的类,这意味着它必须导入DjangoTestSuiteRunner. 文件顶部的此导入导致ImproperlyConfigured错误。将自定义 TestRunner 类移动到单独的文件解决了该问题。

于 2014-04-02T23:44:44.307 回答