首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django Unitest:表不存在

Django Unitest:表不存在
EN

Stack Overflow用户
提问于 2016-10-15 14:29:39
回答 2查看 4K关注 0票数 0

我创建了这样一个简单的测试用例:

代码语言:javascript
复制
from unittest import TestCase
import user_manager


class UserTest(TestCase):
    def test_register(self):
        email = "dung7@gmail.com"
        password = "123456"
        result, user = user_manager.setup_new_user(email, password)
        self.assertEqual(result, CodeID.SUCCESS)

然后我做了一个测试:

代码语言:javascript
复制
python manage.py test users

这是原木:

代码语言:javascript
复制
Creating test database for alias 'default'...
/Users/admin/Projects/MyApp/venv/lib/python2.7/site-packages/django/db/backends/mysql/base.py:112: Warning: Table 'mysql.column_stats' doesn't exist
  return self.cursor.execute(query, args)
Creating test database for alias 'myapp_log'...
.FE
======================================================================
ERROR: test_register (users.tests.UserTest)
----------------------------------------------------------------------
Traceback (most recent call last):
...
ProgrammingError: (1146, "Table 'test_myapp.user' doesn't exist")

因此,它创建了一个测试数据库,但似乎没有创建表。以下是我的数据库设置:

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "myapp",
        'USER': "root",
        'PASSWORD': "",
        'HOST': '127.0.0.1',
        'PORT': '',
    },
    'myapp_log': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "myapp_log",
        'USER': "root",
        'PASSWORD': "",
        'HOST': '127.0.0.1',
        'PORT': '',
    },
}

我的模特:

代码语言:javascript
复制
class User(BaseModel):
    uid = models.IntegerField(primary_key=True)
    email = models.CharField(max_length=200)
    password = models.CharField(max_length=200)
    create_time = models.IntegerField()
    update_time = models.IntegerField()
    status = models.IntegerField()
    social_token = models.CharField(max_length=200)
    social_app = models.IntegerField()

    class Meta:
        db_table = 'user'

有人知道为什么没有创建“用户”表吗?

更新:

我的测试用例中的user_manager将执行一些查询,并在表用户上添加新记录。

我想,当我运行这个测试用例时,Django会以某种方式读取我的模型并创建一个包含所有这些模型的表的测试数据库。我说得对吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-17 10:35:04

因此,我发现我需要将我的models.py放在我的用户文件夹中,并将“用户”添加到INSTALLED_APPS设置中。现在起作用了。

票数 1
EN

Stack Overflow用户

发布于 2016-10-15 14:35:08

您的测试数据库需要与生产数据库不同。一旦运行测试用例,测试数据库就会被销毁。在您的示例中,没有创建数据库。您应该阅读本文档以获得详细信息,https://docs.djangoproject.com/en/1.10/topics/testing/overview/还可以添加user_manager模块的片段吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40060253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档