【问题标题】:How to integrate MongoMock with Pymongo-Flask如何将 MongoMock 与 Pymongo-Flask 集成
【发布时间】:2021-06-10 18:48:01
【问题描述】:

我想为我们的 mongo 代码编写一些单元测试,使用 mongomock 作为后端。但是,Flask-PyMongo 在 Collection 类之上添加了一个便利类 (find_one_or_404),这意味着我不能直接进行 MongoMock 替换。任何尝试将此函数添加到 Collection 类上的尝试似乎都不起作用(我认为它与覆盖的 __getattr__ 有关 - 每次我尝试在 db.collection_name.find_one_or_404({}) 上得到 TypeError: 'Collection' object is not callable)。除了不使用此功能之外,我还有哪些选择?

【问题讨论】:

    标签: python mongodb flask mocking pytest


    【解决方案1】:

    没有更好的想法,答案是“一直模拟”

    @pytest.fixture
    def mock_thing_collection(mocker):
      mock_data = Mock()
      mock_db = Mock()
      mock_db.things = mock_data
      mock = mocker.patch("app.mongo")
      mock.db = mock_db
      return mock_data
    

    然后,在测试中

    def test_things(mocker, client, mock_thing_collection):
      return_items = ["a", "b", "c"]
      find_mock = mocker.patch.object(mock_thing_collection, 'find', return_value=return_items)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-08
      • 2016-01-14
      • 1970-01-01
      • 1970-01-01
      • 2014-07-03
      • 2020-03-30
      • 2020-04-20
      相关资源
      最近更新 更多