pythonasyncioapiasyncfastapiframeworkjsonjson-schemaopenapiopenapi3pydanticpython-typespython3redocreststarletteswaggerswagger-uiuvicornweb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
853 B
33 lines
853 B
import sys
|
|
|
|
import pytest
|
|
|
|
from tests.benchmarks.utils import (
|
|
ROUTE_COUNT,
|
|
ROUTE_PATH_PREFIX,
|
|
create_openapi_app,
|
|
generate_openapi,
|
|
)
|
|
|
|
if "--codspeed" not in sys.argv:
|
|
pytest.skip(
|
|
"Benchmark tests are skipped by default; run with --codspeed.",
|
|
allow_module_level=True,
|
|
)
|
|
|
|
|
|
@pytest.mark.timeout(60)
|
|
def test_openapi_dependency_graph(benchmark) -> None:
|
|
app = create_openapi_app()
|
|
schema = benchmark(generate_openapi, app)
|
|
dynamic_paths = [
|
|
path for path in schema["paths"] if path.startswith(ROUTE_PATH_PREFIX)
|
|
]
|
|
assert len(dynamic_paths) == ROUTE_COUNT
|
|
assert all(
|
|
any(
|
|
parameter["in"] == "query" and parameter["name"] == "query_value"
|
|
for parameter in schema["paths"][path]["get"]["parameters"]
|
|
)
|
|
for path in dynamic_paths
|
|
)
|
|
|