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



我有一个运行Django 2的应用程序,它连接到Microsoft SQL Server后端。

我们处于一个非常严格控制的大型环境中 - 用户帐户可以访问包含我的 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'

我只是想让它使用我在设置中设置的"默认"数据库进行测试。

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

所以我只希望我的测试针对这个重复的数据库运行。我应该更改什么才能连接?

Django 测试不会在现有数据库上运行,或者应该以这种方式使用。Django 总是创建一个新的数据库,所有测试的名称为 test_db_name_specified_in_settings。

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

相关内容

  • 没有找到相关文章

最新更新