我有一个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
这里面有我遗漏的语法吗?
发布于 2019-11-26 21:04:06
只需模仿sqlalchemy.and_。其理由是,在执行模拟过滤器之前会调用它。
https://stackoverflow.com/questions/57582448
复制相似问题