Django 测试报错AttributeError : 'tuple' object has no attribute 'setdefault'

标签 django testing django-manage.py

我正在尝试在放置在测试文件夹中的 django 中运行测试。以下是输出。

python manage.py test
Traceback (most recent call last):
File "manage.py", line 10, in <module> execute_from_command_line(sys.argv)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 399, in execute_from_command_line utility.execute()
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 392, in execute self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.7/dist-packages/django/core/management __init__.py", line 272, in fetch_command klass = load_command_class(app_name,subcommand)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 75, in load_command_class module = import_module('%s.management.commands.%s' % (app_name, name))
File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py",line 40, in import_module __import__(name)
File "/usr/local/lib/python2.7/dist-packages/south/management/commands __init__.py", line 10, in <module> import  django.template.loaders.app_directories
File "/usr/local/lib/python2.7/dist-packages/django/template/loaders /app_directories.py", line 23, in <module> mod = import_module(app)
File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 40, in import_module __import__(name)
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/__init__.py", line 6, in <module> from django.contrib.admin.sites import AdminSite, site
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py", line 4, in <module> from django.contrib.admin.forms import AdminAuthenticationForm
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/forms.py", line 6, in <module> from django.contrib.auth.forms import AuthenticationForm
File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/forms.py", line 17, in <module> from django.contrib.auth.models import User 
File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/models.py", line 48, in <module> class Permission(models.Model):
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 96, in __new__new_class.add_to_class('_meta', Options(meta, **kwargs))
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 264, in add_to_class value.contribute_to_class(cls, name)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/options.py", line 124, in contribute_to_class self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
File "/usr/local/lib/python2.7/dist-packages/django/db/__init__.py", line 34, in __getattr__ return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 196, in __getitem__self.ensure_defaults(alias)
File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 174, in ensure_defaults conn.setdefault('ATOMIC_REQUESTS', False)
AttributeError: 'tuple' object has no attribute 'setdefault'

有人可以帮我解决这个问题吗? 我尝试通过检查环境来解决问题,我认为它是正确的。测试在相同环境下的生产中运行良好。

数据库设置:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2'
    'NAME': 'projectx',        
    'USER': 'xyz',
    'PASSWORD': 'xyz',
    'HOST': '127.0.0.1',
    'PORT': '',         
}
}
if 'test' in sys.argv:
DATABASES['default'] = {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'test_project',
    'USER': 'xyz',
    'PASSWORD': 'xyz',
    'HOST': '127.0.0.1',
    'PORT': '',         
},

最佳答案

在测试 DATABASES 字典结束后有一个逗号,这将它变成了一个单项元组。删除最后一个逗号。

关于Django 测试报错AttributeError : 'tuple' object has no attribute 'setdefault' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30023408/

相关文章:

django - 检查 django.test.TestCase 中的模板名称

testing - 如何在 Laravel 中以登录用户身份运行 Behat 测试?

android - 如何在单元测试中实例化 ViewModel?

python - 为什么我无法验证通过自定义管理.py 命令创建的 Django 用户?

python - 这个日期检查是否更简洁?

javascript - 来自 {% for %} 的 Django 模板变量循环到 Javascript

python - django-cms makemigrations错误: No module named 'packaging'

django - 为什么 Django 的 test 命令不能识别某些选项?

python - PIL 不会出现在 Pycharm 或 Python 3.4.3 shell 中...但可以在我的命令行中使用

python - 如何在另一个模型中使用用户模型的过滤方法(django)