【发布时间】:2020-01-15 17:52:22
【问题描述】:
我的 Flask 应用代码如下所示
#!flask/bin/python
import os, sys; sys.path.append(os.path.dirname(os.path.realpath(__file__)))
from flask_restful import Api
from flask_cors import CORS
from flask_jwt_extended import JWTManager
from werkzeug.serving import WSGIRequestHandler
import logging
from flask import Flask, request
from waitress import serve
app = Flask(__name__, static_folder='ui', static_url_path='')
def create_app():
handler = logging.StreamHandler(sys.stdout)
logger = logging.getLogger('webapp')
logger.setLevel(logging.INFO)
logger.addHandler(handler)
WSGIRequestHandler.protocol_version = "HTTP/1.1"
app.config['CORS_HEADERS'] = 'Content-Type'
CORS(app, origins=['http://127.0.0.1', 'http://localhost:3000', 'http://localhost:3000/api'],
allow_headers=["Content-Type", "Authorization",
"Access-Control-Allow-Credentials",
"Access-Control-Allow-Headers",
"Access-Control-Allow-Origin"], supports_credentials=True)
logging.basicConfig(level=logging.DEBUG)
app.config['SECRET_KEY'] = '...'
app.config['JWT_ACCESS_LIFESPAN'] = {'hours': 24}
app.config['JWT_REFRESH_LIFESPAN'] = {'days': 30}
jwt = JWTManager(app)
api = Api(app)
api.add_resource(resources.Login, '/api/login', methods=['POST'])
if __name__ == '__main__':
app = create_app()
serve(app, host='0.0.0.0', port=5000)
# app.run(host='0.0.0.0', port=5000, use_reloader=False)
我的测试用例是这样的
def setUp(self):
self.client = app.test_client()
self.client.testing = True
result = self.client.post('/api/login/', content_type='application/json',
json={'email': 'tester@fairxchange.co.uk', 'password': 'Tyle82654isMid!'})
json_data = json.loads(result.get_data(as_text=True))
self.token = json_data['access_token']
结果有:
<Response streamed [405 METHOD NOT ALLOWED]>
我在这里简化了代码。在 TestCase 设置中,我使用 api/login 来收集 jwt 令牌,然后在我的每个测试用例中使用它。但是我没有通过登录。
我哪里错了? Flask 应用在测试之外运行良好。
【问题讨论】:
-
凹凸,因此仍然无法测试
标签: python-3.x flask flask-restful