将SQLAlchemy 'and_'与MagicMock一起使用



我有一个SQL的调用,我试图模拟它。

Model.query.filter(and_(Model.id.in_(some_ids), Model.other_id != None)).all()

我正在使用MagicMock来模拟这个调用并给它一个返回值。我遇到的问题是当我添加and_时。

为没有and_的调用设置返回值非常简单,如下所示:

mock_model_class.query.filter().all.return_value = some_value

当我尝试模拟and_时,我收到来自SQLAlchemy的错误。

sqlalchemy.exc.ArgumentError: SQL expression object or string expected, got object of type <class 'unittest.mock.MagicMock'> instead

我尝试了不同的变化,但无济于事...如:


mock_model_class.query.filter().and_().all.return_valuemock_model_class.query.filter(and_).all.return_value

我缺少一些语法吗?

只是模拟sqlalchemy.and_.原因是这是在执行模拟过滤器之前调用的。

最新更新