Я тестирую свое приложение Flask с помощью FlaskClient, чтобы не запускать сервер Flask всегда, когда я тестирую свое приложение.
Я создал представление «sign_in», которое возвращает заголовок «Авторизация» с зашифрованным токеном, когда пользователь успешно входит в мой интерфейс.
Это представление работает нормально в обычной среде, оно корректно возвращает заголовок «Авторизация», однако, когда я тестирую это представление, в тестовой среде оно не возвращает заголовок «Авторизация». Представление возвращает 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, "")