【问题标题】:Django unittest failing with table not foundDjango unittest 失败,找不到表
【发布时间】:2016-01-09 10:14:14
【问题描述】:
from django.test import TestCase
from data.models import Projects

class ProjectTestCase(TestCase):

    def test_project(self):

        Projects.objects.create(name="lion")
        lion = Projects.objects.get(name="lion")
        self.assertEqual(lion.count(), 1)

我有一个像上面这样的示例测试用例,当我使用这个命令运行时 python manage.py test -v3 测试

它正在抛出以下错误。

Traceback (most recent call last):
  File "/Users/yekabathula/workspace/roster/tests/test_project.py", line 12, in test_animals_can_speak
    Projects.objects.create(name="lion")
  File "/Library/Python/2.7/site-packages/django/db/models/manager.py", line 127, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/django/db/models/query.py", line 348, in create
    obj.save(force_insert=True, using=self.db)
  File "/Library/Python/2.7/site-packages/django/db/models/base.py", line 710, in save
    force_update=force_update, update_fields=update_fields)
  File "/Library/Python/2.7/site-packages/django/db/models/base.py", line 738, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  File "/Library/Python/2.7/site-packages/django/db/models/base.py", line 822, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "/Library/Python/2.7/site-packages/django/db/models/base.py", line 861, in _do_insert
    using=using, raw=raw)
  File "/Library/Python/2.7/site-packages/django/db/models/manager.py", line 127, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/django/db/models/query.py", line 920, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "/Library/Python/2.7/site-packages/django/db/models/sql/compiler.py", line 963, in execute_sql
    cursor.execute(sql, params)
  File "/Library/Python/2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/Library/Python/2.7/site-packages/django/db/utils.py", line 97, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/Library/Python/2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/Library/Python/2.7/site-packages/django/db/backends/mysql/base.py", line 124, in execute
    return self.cursor.execute(query, args)
  File "/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.10-intel.egg/MySQLdb/cursors.py", line 202, in execute
    self.errorhandler(self, exc, value)
  File "/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.10-intel.egg/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
ProgrammingError: (1146, "Table 'test_nst2015.projects' doesn't exist")

----------------------------------------------------------------------
Ran 1 test in 0.031s

FAILED (errors=1)
Destroying test database for alias 'default' ('test_nst2015')...

【问题讨论】:

  • 你的模型有迁移吗?
  • 这看起来像是设置问题,而不是测试问题。尝试打开shell并在shell中创建对象(./manage.py shell然后导入模型并创建实例)。

标签: python mysql django python-2.7 django-models


【解决方案1】:

首先: 运行makemigrations

试试这个:

python manage.py makemigrations

第二:lionProjects object,而不是查询集。
如果您想获取项目的数量,请尝试将断言更改为:

self.assertEqual(Projects.objects.count(), 1)

【讨论】:

  • 我试过了,但没有运气。应用迁移后,我需要做些什么吗?
  • django 版本是什么?迁移文件夹已创建?
  • Django 1.8,是的,已应用迁移。但仍然出现该错误。
  • 同样的错误?你改变了断言?你能用这个(test_animals_can_speak)的块代码更新帖子吗
  • italic bold from django.test import TestCase from data.models import Projects class ProjectTestCase(TestCase): def test_project(self): Projects.objects.create(name="lion") self.assertEqual(Projects.objects.count(), 1). 同样的错误。但是我在要执行的错误操作中看到以下行:同步未迁移的应用程序:utils、frontend、tests、fixtures Apply all migrations:contenttypes、api、tastepie、auth、sessions
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
  • 1970-01-01
相关资源
最近更新 更多