在 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
我想创建多个测试数据库,这样我就可以检查我的同步脚本是否正常工作。我已将它们添加到 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