Как исправить проблему отсутствия заголовка аутентификации / файлов cookie при тестировании моего приложения фляги с помощью pytest? - PullRequest
0 голосов
/ 06 мая 2019
import pytest
import app

@pytest.yield_fixture
def client():
    application = app.App()
    client = application.create_app(flask_config_name='testing').test_client()
    yield client

def test_create_staff(client):
    rv = client.post('/api/v1/staff', json={
    "surname": "V",
    "name": "Vasu",
    "role": "administrator",
    "employ_id": "vasu@rossum.io",
    "password": "string",
    "phone": "9848664982",
    "email": "vinthavasu@gmail.com"
})
    if b'Successful' not in rv.data:
        raise AssertionError(rv.data)

@pytest.yield_fixture(scope="function")
def test_auth_login(client):
    rv = client.post('/api/v1/auth/login', json={
        "username": "vasu@rossum.io",
        "password": "string"})
    print(rv.cookie['_id'])
    if b'Vasu' not in rv.data:
        raise AssertionError(rv.data)


def test_list_companies(client): 
    rv = client.get('/api/v1/company')
    if b'[]' not in rv.data:
        raise AssertionError(rv.data)
    if rv.status_code != 200:
        raise AssertionError(rv.status_code)


platform linux -- Python 3.6.7, pytest-4.4.1, py-1.8.0, pluggy-0.9.0 -- /home/vasu/venv-sri/bin/python3
cachedir: .pytest_cache
rootdir: /home/vasu/Desktop/pytest
plugins: xdist-1.28.0, reorder-0.1.1, forked-1.0.2, cov-2.7.1
collected 3 items                                                                                                                            

app/api/tests/test_api.py::test_get_api [2019-05-06 09:45:51,743] INFO in __init__: Module created
[2019-05-06 09:45:51,753] INFO in __init__: Application started
PASSED
app/api/staff/tests/test_staff.py::test_create_staff [2019-05-06 09:45:51,794] INFO in __init__: Module created
[2019-05-06 09:45:51,797] INFO in __init__: Application started
[2019-05-06 09:45:52,426] INFO in controller: Creating Staff record : Successful
PASSED
app/api/company/tests/test_company.py::test_list_companies [2019-05-06 09:45:52,437] INFO in __init__: Module created
[2019-05-06 09:45:52,442] INFO in __init__: Application started
FAILED

====================FAILURES ===========
_________________________test_list_companies ________________________

client = <FlaskClient <Flask 'app'>>

    def test_list_companies(client):
        rv = client.get('/api/v1/company')
        if b'[]' not in rv.data:
>           raise AssertionError(rv.data)
E           AssertionError: b'{\n  "msg": "Missing JWT in headers or cookies (Missing cookie \\"access_token_cookie\\"; Missing Authorization Header)"\n}\n'

app/api/company/tests/test_company.py:4: AssertionError

Я написал программу в колбе restplus с использованием аутентификации jwt. для этого попытался сделать pytest для проверки работоспособности кода. Когда я попробую, Тест на аутентификацию JWT пройден, но когда я пытаюсь получить информацию о компании, которая защищена аутентификацией jwt, он говорит, что аутентификационные заголовки / куки отсутствуют. Пожалуйста, предложите мне решение, если можете.

1 Ответ

0 голосов
/ 06 мая 2019

Вы можете установить заголовки в вашем запросе test_client. Вы можете увидеть пример этого в действии здесь: https://github.com/vimalloc/flask-jwt-extended/blob/master/tests/test_headers.py#L30

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...