具有非托管外部只读数据库的单元测试

2024-06-11 16:28:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个项目,其中涉及一个巨大的外部数据集(约490Gb)加载到外部数据库(通过django-pyodbcazure的MS-SQL)。我已经在它们的meta中生成了标记为managed=False的Django模型。在我的应用程序中,这很好,但我似乎不知道如何运行单元测试。我可以想到两种方法:模拟测试数据库中的数据,以及给单元测试(和CI)对生产数据集的只读访问。两种选择都可以接受,但我都搞不清:

选项1:模拟数据 因为我的模型被标记为managed=False,所以没有迁移,因此测试运行程序无法创建数据库。在

选项2:实时数据django-pyodbc-azure将尝试创建一个测试数据库,但由于它具有只读连接而失败。我还怀疑,即使允许这样做,生成的数据库也会缺少所需的表。在

Q如何运行单元测试?安装其他包或重新配置数据库是可以接受的。我的设置使用django1.9和postgresql作为主数据库。在


Tags: 数据项目django标记模型数据库falsesql
1条回答
网友
1楼 · 发布于 2024-06-11 16:28:59

盯着屏幕看了一天之后,我找到了一个解决办法:

我从模型中删除了managed=True,并生成了迁移。为了防止针对生产数据库的实际迁移,我使用了数据库路由器来阻止迁移。(对于相应的应用程序和数据库,在allow_migrate中返回False)。在

在我的设置中,我检测是否正在运行unittests,然后不定义数据库路由器或外部数据库。在迁移出现后,单元测试。在

相关问题 更多 >