【发布时间】:2021-06-03 08:29:20
【问题描述】:
简述
在 Flask-SqlAlchemy 中进行测试时,如何模拟多个不同的 query.filter_by().first ?
更详细
我跟着 this link 做了一些单元测试,当我只有一个 query.filter_by 时效果很好。
问题在于我有一个功能:
user = User.query.filter_by(username=user["username"]).first()
organization = Organization.query.filter_by(organization_name=user.get("organization")).first()
如果我这样做时点击了上一个链接:
@mock.patch('flask_sqlalchemy._QueryProperty.__get__')
def test(self, queryMOCK):
queryMOCK \
.return_value.filter_by \
.return_value.first \
.return_value = user
我模拟了所有 query.filter_by() 而不仅仅是两者之一。
他们说要做:
@patch('app.model.some_model.SomeModel')
def test_some_case(self, some_model_mock):
filter_by_mock = some_model_mock.query.filter_by
但我没能做到。
【问题讨论】:
-
您要测试过滤条件还是整个查询?
-
无,我有一个同时使用这两个查询的函数,我想分别模拟这两个查询。
标签: python unit-testing flask sqlalchemy