我有一个要模拟的SQLAlchemy调用。
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_value
mock_model_class.query.filter(and_).all.return_value
我是否缺少某些语法?
只是模拟sqlalchemy.and_
。原因是在模拟筛选器执行之前调用了此方法。