I wanted to create multiple test databases, so I could check if my synchronizing script is working properly. I have added them to Django settings like this:
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]",
}
},
}
This is how my test for sake of testing looks like:
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)
But when I run it, it only creates DB for 'default' alias:
Creating test database for alias 'default'...
*DB_SMTH are imported names from environment and name[x] are just names
To create those DB's while running tests we need to add a set with names of databases from Django settings. We should add those that we wish to use while testing, at the beggining of TestCase:
class SyncTestCase(TestCase):
databases = {'name[1]', 'name[2]', 'name[3]'}
...
Link from Django documentation: https://docs.djangoproject.com/en/3.2/topics/testing/tools/#testing-multi-db