小编spu*_*kus的帖子

在烧瓶中嘲笑pymongo

测试我的Flask应用程序没有什么问题。我的看法如下:

def prelogin():
    email = request.args.get('email')
    if not email:
        return '', 204
    user = User.query.filter({'email': email}).first()
    if not user:
        return '', 204
    address = current_app.config['UPLOADED_PHOTOS_URL']
    try:
        mongo_photo = pymongo.db.photos.find_one(user.photo)
        photo = address + mongo_photo['file']
    except (KeyError, AttributeError):
        photo = None
    return jsonify({
        'email': email,
        'fullname': user.fullname,
        'photo': photo
    })
Run Code Online (Sandbox Code Playgroud)

和我的测试功能是这样的:

@patch('arounded.userv2.views.User')
@patch('arounded.userv2.views.pymongo')
def test_valid_prelogin(self, mock_user, mock_pymongo):
    user_config = {
        'filter.return_value.first.return_value.fullname': 'Someone'
    }
    mock_user.query.configure_mock(**user_config)
    mock_pymongo.db.photos.find_one.return_value = {'file': 'no-photo.png'}
    response = self.client.get(
        '/api/v2/users/prelogin?email=someone@example.com')
    self.assert_status(response, 200)
Run Code Online (Sandbox Code Playgroud)

如果我尝试在测试函数中打印模拟对象,它们将返回正确的值。然而,鉴于我仍然得到:

arounded/userv2/views.py line 40 in prelogin
  'photo': …
Run Code Online (Sandbox Code Playgroud)

python mocking pymongo flask

5
推荐指数
1
解决办法
1356
查看次数

标签 统计

flask ×1

mocking ×1

pymongo ×1

python ×1