无需迁移。我在测试中遇到了这个错误

时间:2017-09-20 01:25:21

标签: python django

我测试时出错了,

Operations to perform:
  Apply all migrations: admin, app, auth, contenttypes, sessions
Running migrations:
  No migrations to apply.

我在test.py中写道

class UserModelTests(TestCase):
    def test_is_empty(self):
        queryset = User.objects.order_by('user_id').values()[:2]
        expected = [
            {'name': 'Tom', 'user_id': 1, 'nationarity': 'America', 'dormitory': 'A', 'group': 3}
        ]
        for idx, item in enumerate(expected):
            self.assertDictEqual(item, queryset[idx])

我阅读了文件和其他网站,我找到了夹具和放大器。也许需要setUp(),但我无法理解如何编写它。我该如何解决这个问题?我应该在这段代码中添加什么?  我使用命令./manage.py test

1 个答案:

答案 0 :(得分:0)

您没有遇到错误,但是正在应用数据库迁移的响应(在您的情况下为非)。如果您使用./manage.py migrate命令,您会看到相同的响应。

修改模型结构时,必须调用./manage.py makemigrations命令。这些makemigrations会在app/migrations目录中创建一个迁移文件。使用这些文件 将新迁移应用于实际数据库(或恢复到以前的状态)。

消息No migrations to apply表示尚未存在尚未应用于数据库的这些迁移文件。调用该命令时,将对INSTALLED_APPS中列出的模块执行迁移。

如果测试已执行且断言失败,则测试错误将类似于:

Testing started at 9:45 ...
Creating test database for alias 'default'...
System check identified no issues (0 silenced).

Failure
Traceback (most recent call last):
  File "/home/edwin/git/portfolio/backend/apps/projects/tests.py", line 114, in test_project_link_datetime_modified_on_update
    self.assertNotEqual(None, None)
AssertionError: None == None

Destroying test database for alias 'default'...
Process finished with exit code 1

成功的测试可能如下:

./manage.py test
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
........................
----------------------------------------------------------------------
Ran 24 tests in 0.208s

OK

如果您没有看到这些内容,则很可能无法正常执行测试。确保您已添加包含这些测试的应用已添加到INSTALLED_APPS文件中的settings.py。尝试以./manage.py test或您可以使用./manage.py test <app_name>

的特定应用运行测试