【问题标题】:Django tests are not running on a test databaseDjango 测试未在测试数据库上运行
【发布时间】:2020-07-02 03:49:12
【问题描述】:

在我在数据库中创建行的地方运行测试后,我注意到使用当前数据库而不是我认为的测试数据库,这是 django 的默认行为。不幸的是,我无法弄清楚如何解决此问题。

目前在 settings.py 中

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": os.environ["POSTGRES_NAME"],
        "USER": os.environ["POSTGRES_USER"],
        "PASSWORD": os.environ["POSTGRES_PASSWORD"],
        "HOST": os.environ["POSTGRES_HOST"],
        "PORT": os.environ["POSTGRES_PORT"],
    }
}

但当添加"TEST": {"NAME": "test_database"}, 时,它似乎仍然在主数据库上运行。

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": os.environ["POSTGRES_NAME"],
        "USER": os.environ["POSTGRES_USER"],
        "PASSWORD": os.environ["POSTGRES_PASSWORD"],
        "HOST": os.environ["POSTGRES_HOST"],
        "PORT": os.environ["POSTGRES_PORT"],
        "TEST": {
            "NAME": "test_database",
        }
    }
}

如何获取它以便测试写入新的测试数据库?

【问题讨论】:

  • 这能回答你的问题吗? Different db for testing in Django?
  • 这不是因为接受的答案来自更旧版本的 django 并且似乎对人们有用的最新答案似乎对我不起作用(我尝试了它的修复并有在第二个代码示例中显示“

标签: django database testing


【解决方案1】:

让您的测试在测试数据库上运行的一个关键步骤是使用来自django.testTestCase

这样就可以正常运行了。

from django.test import TestCase


class MyTests(TestCase):
    ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2012-05-09
    • 2011-06-04
    • 2016-05-17
    • 2013-04-25
    • 2018-08-27
    • 2022-08-02
    相关资源
    最近更新 更多