[英]How to pytest a Flask Endpoint
我开始使用 Flask 和 Pytest 以实现带有单元测试的 rest 服务,但我遇到了一些麻烦。
我想为我的简单端点做一个简单的测试,但我一直Working outside of application context.
运行测试时出错。
这是终点:
from flask import jsonify, request, Blueprint
STATUS_API = Blueprint('status_api', __name__)
def get_blueprint():
"""Return the blueprint for the main app module"""
return STATUS_API
@STATUS_API.route('/status', methods=['GET'])
def get_status():
return jsonify({
'status' : 'alive'
})
这就是我尝试测试它的方式(我知道它应该无法通过测试):
import pytest
from routes import status_api
def test_get_status():
assert status_api.get_status() == ''
我猜我只是无法在不构建整个应用程序的情况下尝试该方法。 但如果是这样的话,我真的不知道如何解决这个问题
关于测试的 Flask 文档非常好。
您应该创建一个所谓的test client
,而不是导入视图函数,例如作为 pytest 夹具。
对于我的最后一个 Flask 应用程序,它看起来像:
@pytest.fixture
def client():
app = create_app()
app.config['TESTING'] = True
with app.app_context():
with app.test_client() as client:
yield client
( create_app
是我的应用工厂)
然后您可以轻松地创建测试,如下所示:
def test_status(client):
rv = client.get('/stats')
assert ...
开头提到的,官方文档确实不错。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.