【问题标题】:Creating multiple test databases in Django TestCases在 Django TestCases 中创建多个测试数据库
【发布时间】:2021-08-02 14:14:20
【问题描述】:

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

但是当我运行它时,它只会为“默认”别名创建数据库:

Creating test database for alias 'default'...

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

【问题讨论】:

    标签: python django database testcase


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-11-17
      • 2012-05-20
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 2019-09-05
      • 2018-03-25
      • 1970-01-01
      相关资源
      最近更新 更多