Где полный пример тестирования с помощью pytest с использованием расширения Quart Quart-OpenAPI?
Я хотел бы использовать pytest с расширением Quart quart-openapi, но примеры документации и поиск в Google не помогли.
Где я могу найти конкретный пример инструмента тестирования pytest, который используется с quart-openapi?
До сих пор я прочитал эти источники:
Учебник блога Quart с тестированием
Квартовая документация по тестированию
Вопрос переполнения стека на аналогичных инструментах
Структура проекта:
├── app
│ ├── __init__.py
│ ├── api.py
│ ├── log.py
│
├── requirements.txt
├── run.py
└── tests
├── __init__.py
└── test_endpoint.py
app/__init__.py
:
from .api import QUART_APP
api.py
:
"""Registered endpoints"""
from quart import jsonify
from quart_openapi import Pint, Resource
# Docs say that Pint will forward all init args to Quart()
QUART_APP = Pint(__name__, title="Quart tts")
@QUART_APP.route('/')
class Home(Resource):
""" Endpoint that reports its own status """
async def get(self):
""" Report status of service """
return jsonify({'OK': True, 'hello': 'world'})
test_endpoint.py
:
import pytest
from app.api import QUART_APP as app
@pytest.fixture(name='test_app')
def _test_app():
return app
@pytest.mark.asyncio
async def test_app(app):
client = app.test_client()
response = await client.get('/')
assert response.status_code == 200
Фактические результаты: ERROR at setup of test_app ... fixture 'app' not found
Ожидаемые результаты: я могу протестировать с помощью quart-openapi с помощью pytest.
1 ответ
Глядя на документы прибора Pytest, имя, которое вы даете устройству, - это имя, на которое вы бы ссылались. Так что я бы, вероятно, изменил параметр "name" на "testapp" следующим образом:
import pytest
from app.api import QUART_APP as app
@pytest.fixture(name='testapp')
def _test_app():
return app
@pytest.mark.asyncio
async def test_app(testapp):
client = testapp.test_client()
response = await client.get('/')
assert response.status_code == 200
Когда я настраиваю это в своем собственном каталоге, вышеприведенное работает и проходит так, что оно должно работать для вас.