mirror of https://github.com/tiangolo/fastapi.git
36 lines
877 B
Python
36 lines
877 B
Python
from typing import Optional
|
|
|
|
from fastapi import FastAPI, File, Form
|
|
from starlette.testclient import TestClient
|
|
from typing_extensions import Annotated
|
|
|
|
app = FastAPI()
|
|
|
|
|
|
@app.post("/urlencoded")
|
|
async def post_url_encoded(age: Annotated[Optional[int], Form()] = None):
|
|
return age
|
|
|
|
|
|
@app.post("/multipart")
|
|
async def post_multi_part(
|
|
age: Annotated[Optional[int], Form()] = None,
|
|
file: Annotated[Optional[bytes], File()] = None,
|
|
):
|
|
return {"file": file, "age": age}
|
|
|
|
|
|
client = TestClient(app)
|
|
|
|
|
|
def test_form_default_url_encoded():
|
|
response = client.post("/urlencoded", data={"age": ""})
|
|
assert response.status_code == 200
|
|
assert response.text == "null"
|
|
|
|
|
|
def test_form_default_multi_part():
|
|
response = client.post("/multipart", data={"age": ""})
|
|
assert response.status_code == 200
|
|
assert response.json() == {"file": None, "age": None}
|