首页 > 解决方案 > Django 测试未在测试数据库上运行

问题描述

在运行我在数据库中创建行的测试之后,我注意到使用当前数据库而不是我认为是 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",
        }
    }
}

我怎样才能得到它,以便测试写入一个新的测试数据库?

标签: djangodatabasetesting

解决方案


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

所以这将正确运行。

from django.test import TestCase


class MyTests(TestCase):
    ...

推荐阅读