我有一个运行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