在 Django TestCases 中创建多个测试数据库

Creating multiple test databases in Django TestCases

我想创建多个测试数据库,这样我就可以检查我的同步脚本是否正常工作。我已将它们添加到 Django 设置中,如下所示:

DATABASES = {
"default": {
    "ENGINE": env.str("DB_ENGINE"),
    "NAME": env.str("name[1]"),
    "USER": env.str("DB_USER"),
    "PASSWORD": env.str("DB_PASSWORD"),
    "HOST": env.str("DB_HOST"),
    "PORT": env.str("DB_PORT"),
    "TEST":
        {
            "NAME": 'name[1]',
        }
},
"name[2]": {
    "ENGINE": env.str("DB_ENGINE"),
    "NAME": "[name1]",
    "USER": env.str("DB_USER"),
    "PASSWORD": env.str("DB_PASSWORD"),
    "HOST": env.str("DB_HOST"),
    "PORT": env.str("DB_PORT"),
    "TEST":
        {
            "NAME": "name[2]",
        }
},
"name[3]": {
    "ENGINE": env.str("DB_ENGINE"),
    "NAME": "name[3]",
    "USER": env.str("DB_USER"),
    "PASSWORD": env.str("DB_PASSWORD"),
    "HOST": env.str("DB_HOST"),
    "PORT": env.str("DB_PORT"),
    "TEST":
        {
            "NAME": "name[3]",
        }
},
}

为了测试,我的测试是这样的:

class SyncTestCase(TestCase):

def setUp(self) -> None:
    self.client = Client()

def test_func_tester_client(self):
    bitbucket_db_setup.main()
    response = self.client.get("/v1/devices/?name=a", SERVER_PORT=8000)
    print(response.content)
    self.assertEqual(200, 200)

但是当我 运行 它时,它只会为 'default' 别名创建数据库:

Creating test database for alias 'default'...

*DB_SMTH 是从环境中导入的名称,name[x] 只是名称

要在 运行 测试时创建这些数据库,我们需要添加一组来自 Django 设置的数据库名称。我们应该在 TestCase 的开头添加我们希望在测试时使用的那些:

class SyncTestCase(TestCase):
    databases = {'name[1]', 'name[2]', 'name[3]'}
...

Link 来自 Django 文档:https://docs.djangoproject.com/en/3.2/topics/testing/tools/#testing-multi-db