2 changed files with 43 additions and 1 deletions
@ -0,0 +1,41 @@ |
|||||
|
from typing import Optional |
||||
|
|
||||
|
import pytest |
||||
|
from fastapi import FastAPI, File, Form |
||||
|
from fastapi.testclient import TestClient |
||||
|
from typing_extensions import Annotated |
||||
|
|
||||
|
app = FastAPI() |
||||
|
|
||||
|
|
||||
|
@app.post("/") |
||||
|
def root( |
||||
|
file: Annotated[Optional[bytes], File()] = None, |
||||
|
form: Annotated[Optional[str], Form(embed=True)] = None, |
||||
|
): |
||||
|
return {"file": file, "form": form} |
||||
|
|
||||
|
|
||||
|
client = TestClient(app) |
||||
|
|
||||
|
|
||||
|
@pytest.mark.parametrize( |
||||
|
"file_data, form_data, expected_response", |
||||
|
[ |
||||
|
(None, None, {"file": None, "form": None}), |
||||
|
("", None, {"file": None, "form": None}), |
||||
|
(None, "", {"file": None, "form": None}), |
||||
|
("", "", {"file": None, "form": None}), |
||||
|
("file", "form", {"file": "file", "form": "form"}), |
||||
|
], |
||||
|
) |
||||
|
def test_empty_string_to_none(file_data, form_data, expected_response): |
||||
|
data = {} |
||||
|
if file_data is not None: |
||||
|
data["file"] = file_data |
||||
|
if form_data is not None: |
||||
|
data["form"] = form_data |
||||
|
|
||||
|
response = client.post("/", data=data) |
||||
|
assert response.status_code == 200 |
||||
|
assert response.json() == expected_response |
||||
Loading…
Reference in new issue