我想用mongomock作为后端来写一些mongo代码的单元测试。然而,Flask-PyMongo在Collection类之上添加了一个便利类(find_one_or_404),这意味着我不能直接进行MongoMock替换。任何尝试将此函数绑定到集合类上的尝试似乎都行不通(我认为这与被覆盖的__getattr__有关-每次我尝试在db.collection_name.find_one_or_404({})上获得TypeError: 'Collection' object is not callable )。除了不使用这个功能之外,我还有什么选择?
发布于 2021-06-15 00:53:16
答案是“自始至终都在嘲笑”,没有更好的想法。
@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)https://stackoverflow.com/questions/67926924
复制相似问题