May*_*y.D 3 django django-testing django-tests
所以我有一个包含多个应用程序的 django 项目。
每个应用程序都使用自己的数据库,并且共享一个包含 Django 表(例如 auth、sessions)的公共数据库。
为此,我有几个数据库路由器,所以我的设置如下所示:
DATABASES = {
'default': {
..
},
'app1_db': {
..
},
'app2_db':{
..
}
}
DATABASE_ROUTERS = ["site.db_router.App1Router", "site.db_router.App2Router"]
# no router for default database
Run Code Online (Sandbox Code Playgroud)
每个应用程序还进行了单元测试。为了解决我的问题,我提取了一个应用程序。它包含一个带有四个测试文件的测试模块。一号测试文件如下所示:
class ExcelTestCase(TransactionTestCase):
databases = ["app1_db"]
# some tests
Run Code Online (Sandbox Code Playgroud)
python manage.py test app1.tests.testfile1 引发此错误 django.core.exceptions.ImproperlyConfigured: Circular dependency in TEST[DEPENDENCIES]
我评论了数据库部分:只创建了默认的测试数据库(不是应用程序),并引发了这个错误:
AssertionError: Database queries to 'app1_db' are not allowed in this test. Add 'app1_db' to app1.tests.testfile1.ExcelTestCase.databases to ensure proper test isolation and silence this fai
lure.
Run Code Online (Sandbox Code Playgroud)
我取消注释databases设置并运行,python manage.py test app1.tests以便运行每个测试。
四个测试文件中的三个是TransactionTestCase,因此具有databases设置。
我需要至少评论第一个或第三个(第二个不是 TransactionTestCase)测试文件数据库,否则我会收到循环依赖错误,这样做是AssertionError因为我无法使用应用程序数据库。
我正在使用 Django 2.2 并且已经在这个问题上挣扎了一段时间,任何帮助将不胜感激!
小智 5
也许设置您的“依赖项”。
检查它们是否接收到依赖项列表,并且没有依赖项的数据库接收到一个 EMPTY 列表。
基本上你必须添加类似的东西:
'default': {
..
'TEST': {
'DEPENDENCIES': ['app1_db'],
},
},
'app1_db': {
# ... db settings
'TEST': {
'DEPENDENCIES': [],
},
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1521 次 |
| 最近记录: |