如何为使用两个数据库(mysql和mongo)的django项目编写单元测试

Posted

技术标签:

【中文标题】如何为使用两个数据库(mysql和mongo)的django项目编写单元测试【英文标题】:How to write unittest for django project that using two database (mysql and mongo) 【发布时间】:2021-06-10 06:04:54 【问题描述】:

我的 django 项目使用两种类型的数据库(mariadb 和 mongoengine)我不知道如何编写在同一个测试用例中测试它们的单元测试。请指导我。

现在我尝试使用fixtures_mongoengine 来编写fixture mongo 数据,但不能在同一个测试用例中与mysql fixture 一起使用

【问题讨论】:

【参考方案1】:

如果您使用多个数据库,例如:

# settings.py
DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    ,
    'other': 
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'other.sqlite3',
    

您可以使用TransactionTestCase 喜欢:

# test.py
class TestMyViews(TransactionTestCase):
    databases = 'default', 'other'

    def test_index_page_view(self):
        call_some_test_code()

参考文档here。

不知道mongoengine能不能用,你可以试试。

【讨论】:

以上是关于如何为使用两个数据库(mysql和mongo)的django项目编写单元测试的主要内容,如果未能解决你的问题,请参考以下文章

如何为标签云设计 MySql 表?

如何为特定的mongo文档实现TTL

我应该如何为基于回合制的多人 iPhone 棋盘游戏构建我的 DB 和 API 服务器? (考虑 nodejs、mongo、沙发等)

如何为嵌入文件编写mongo查询

Mongo - 如何找出我连接的用户的角色?如何为用户分配完全读写访问权限?

如何为嵌入式 mongo (flapdoodle) 全局设置 WriteConcern 以修复间歇性测试失败