【发布时间】:2019-04-15 13:57:06
【问题描述】:
我正在使用 FlaskClient 测试我的 Flask 应用程序,以避免在我测试我的应用程序时总是运行 Flask 服务器。
我创建了一个“sign_in”视图,当用户在我的前端成功登录时,它会返回一个带有加密令牌的“Authorization”标头。
此视图在正常环境中正常工作,它正确返回“授权”标头,但是当我在测试环境中测试此视图时,它不返回“授权”标头。视图在“授权”标头中返回None。
我已经在网上尝试了一些解决方案,比如在我的测试用例中添加self.app.config['TESTING'] = True,但是终端报错'FlaskClient' object has no attribute 'config'我已经尝试寻找解决方案,但没有成功.
我想知道会发生什么。
有人知道这个问题的任何解决方案吗?
我将我的代码发送到下面进行分析。
提前谢谢你。
view.py
@app.route("/sign_in", methods = ["POST"])
def sign_in():
...
username, password = ...
try:
encoded_jwt_token = auth_login(username, password)
except UserDoesNotExistException as error:
return str(error), error.status_code
resp = Response("Returned Token")
resp.headers['Authorization'] = encoded_jwt_token
return resp
test.py
class TestAPIAuthLogin(TestCase):
def setUp(self):
self.app = catalog_app.test_client()
# self.app.config['TESTING'] = True # config does not exist
def test_get_api_auth_login_user_test(self):
username = "test"
password = get_string_in_hash_sha512("test")
authorization = 'Basic ' + get_string_in_base64(username + ":" + password)
headers = {
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json',
'Authorization': authorization
}
response = self.app.get('/sign_in', headers=headers)
# it returns None
authorization = response.headers.get("Authorization")
self.assertIsNotNone(authorization)
self.assertNotEqual(authorization, "")
【问题讨论】:
标签: python python-3.x flask flask-testing