2015-05-14 4 views
2

У меня проблема при тестировании моего флеш-приложения с помощью pytest.
Приложение обязательное базовое поле ввода - это параметр request.authorization в колбе.
Но с pytest, flask.test_client() не имеет request.authorization.python - Flask test_client() не имеет request.authorization с pytest

Вот код прибора:

@pytest.yield_fixture(scope='session') 
def app() 
    app = create_app() 

    # some setup code 

    ctx = app.app_context() 
    ctx.push() 
    yield app 
    ctx.pop() 
    # some teadown code 

@pytest.fixture 
def test_client(app) 
    return app.test_client() 

Вот код теста:

def test_index(test_client): 
    res = test_client.get("/", headers={"Authorization": "Basic {user}".format(user=b64encode(b"test_user"))}) 
    assert res.status_code == 200 

Когда я запускаю этот тест, я получил эту ошибку:

E  assert 401 == 200 
E  + where 401 = <Response streamed [401 UNAUTHORIZED]>.status_code 

не только auth, но также request.authorization не имеет никакого значения (None).
Почему это происходит? Есть ли решение?

Спасибо.

ответ

3

Учетные данные для базовой аутентификации HTTP должны иметь имя пользователя и пароль, разделенные двоеточием. Попробуйте следующее:

def test_index(test_client): 
    res = test_client.get("/", headers={"Authorization": "Basic {user}".format(user=b64encode(b"test_user:test_password"))}) 
    assert res.status_code == 200 
+0

Привет, спасибо. Теперь он отлично работает, и я могу видеть 'request.authorization' с именем пользователя и паролем. –

 Смежные вопросы

  • Нет связанных вопросов^_^