代码之家  ›  专栏  ›  技术社区  ›  Hanny

使用自定义测试运行程序对现有数据库运行Django测试

  •  0
  • Hanny  · 技术社区  · 6 年前

    我有一个应用程序正在运行连接到Microsoft SQL Server后端的Django2。

    我们处在一个非常严格控制的大环境中——一个用户帐户可以访问为我的django应用程序存储所有表的数据库。

    因此,我通过各种帖子发现,我需要创建一个 testrunner 对于我的申请-没关系。我可以覆盖 setup_databases 功能-但我不确定 确切地 如何做到这一点。

    我的 TestRunner(DiscoverRunner) 如下所示:

    class ExistingDbTestRunner(DiscoverRunner):
        """ A test runner to test without database creation """
    
        def setup_databases(self, **kwargs):
            """ Override the database creation defined in parent class """
            # force Django to connect to the correct db for tests
            connection = self.connections['default']
            db_conf = connection.settings_dict
            connection.connect()
    
        def teardown_databases(self, old_config, **kwargs):
            """ Override the database teardown defined in parent class """
            pass
    

    但这失败了 AttributeError: 'ExistingDbTestRunner' object has no attribute 'connections'

    我只是想让它使用我在设置中为测试目的设置的“默认”数据库。

    值得注意的是,设置中指定的默认数据库是具有不同名称的生产数据库的副本。

    所以我只想让我的测试运行在这个重复的数据库上。我应该改变什么使它连接起来?

    1 回复  |  直到 6 年前
        1
  •  0
  •   doubleo    6 年前

    Django测试不在现有的数据库上运行,也不打算以这种方式使用。Django总是创建一个新的数据库,在所有测试的设置中都指定了名称test_db_name_。

    更多文档可在此处找到: https://docs.djangoproject.com/en/2.0/topics/testing/overview/#the-test-database