add a test case for python-fastapi query parameter default value (#15744)

This commit is contained in:
William Cheng
2023-06-04 13:37:12 +08:00
committed by GitHub
parent 7295c97089
commit fbb0d6d935
8 changed files with 893 additions and 1 deletions

View File

@@ -8,6 +8,8 @@ pyproject.toml
requirements.txt
setup.cfg
src/openapi_server/apis/__init__.py
src/openapi_server/apis/fake_api.py
src/openapi_server/apis/fake_api_base.py
src/openapi_server/apis/pet_api.py
src/openapi_server/apis/pet_api_base.py
src/openapi_server/apis/store_api.py

View File

@@ -582,6 +582,36 @@ paths:
summary: Updated user
tags:
- user
/fake/query_param_default:
get:
description: ""
operationId: fake_query_param_default
parameters:
- description: has default value
explode: true
in: query
name: has_default
required: false
schema:
default: Hello World
type: string
style: form
- description: no default value
explode: true
in: query
name: no_default
required: false
schema:
type: string
style: form
responses:
"400":
description: Invalid username supplied
"404":
description: User not found
summary: test query parameter default value
tags:
- fake
components:
requestBodies:
UserArray:

View File

@@ -0,0 +1,49 @@
# coding: utf-8
from typing import Dict, List # noqa: F401
import importlib
import pkgutil
from openapi_server.apis.fake_api_base import BaseFakeApi
import openapi_server.impl
from fastapi import ( # noqa: F401
APIRouter,
Body,
Cookie,
Depends,
Form,
Header,
Path,
Query,
Response,
Security,
status,
)
from openapi_server.models.extra_models import TokenModel # noqa: F401
router = APIRouter()
ns_pkg = openapi_server.impl
for _, name, _ in pkgutil.iter_modules(ns_pkg.__path__, ns_pkg.__name__ + "."):
importlib.import_module(name)
@router.get(
"/fake/query_param_default",
responses={
400: {"description": "Invalid username supplied"},
404: {"description": "User not found"},
},
tags=["fake"],
summary="test query parameter default value",
response_model_by_alias=True,
)
async def fake_query_param_default(
has_default: str = Query('Hello World', description="has default value"),
no_default: str = Query(None, description="no default value"),
) -> None:
""""""
return BaseFakeApi.subclasses[0]().fake_query_param_default(has_default, no_default)

View File

@@ -0,0 +1,19 @@
# coding: utf-8
from typing import ClassVar, Dict, List, Tuple # noqa: F401
class BaseFakeApi:
subclasses: ClassVar[Tuple] = ()
def __init_subclass__(cls, **kwargs):
super().__init_subclass__(**kwargs)
BaseFakeApi.subclasses = BaseFakeApi.subclasses + (cls,)
def fake_query_param_default(
self,
has_default: str,
no_default: str,
) -> None:
""""""
...

View File

@@ -12,6 +12,7 @@
from fastapi import FastAPI
from openapi_server.apis.fake_api import router as FakeApiRouter
from openapi_server.apis.pet_api import router as PetApiRouter
from openapi_server.apis.store_api import router as StoreApiRouter
from openapi_server.apis.user_api import router as UserApiRouter
@@ -22,6 +23,7 @@ app = FastAPI(
version="1.0.0",
)
app.include_router(FakeApiRouter)
app.include_router(PetApiRouter)
app.include_router(StoreApiRouter)
app.include_router(UserApiRouter)

View File

@@ -0,0 +1,25 @@
# coding: utf-8
from fastapi.testclient import TestClient
def test_fake_query_param_default(client: TestClient):
"""Test case for fake_query_param_default
test query parameter default value
"""
params = [("has_default", 'Hello World'), ("no_default", 'no_default_example')]
headers = {
}
response = client.request(
"GET",
"/fake/query_param_default",
headers=headers,
params=params,
)
# uncomment below to assert the status code of the HTTP response
#assert response.status_code == 200