diff --git a/tests/test_none_passed_when_null_received.py b/tests/test_none_passed_when_null_received.py index f4e171202..4d1b3b0a8 100644 --- a/tests/test_none_passed_when_null_received.py +++ b/tests/test_none_passed_when_null_received.py @@ -1,4 +1,5 @@ -from typing import Annotated, Optional, Union +import sys +from typing import Optional, Union import pytest from fastapi import Body, FastAPI @@ -7,22 +8,38 @@ from fastapi.testclient import TestClient app = FastAPI() DEFAULT = 1234567890 +endpoints = [] -@app.post("/api1") -def api1(integer_or_null: Annotated[int | None, Body(embed=True)] = DEFAULT) -> dict: - return {"received": integer_or_null} +if sys.hexversion >= 0x31000000: + from typing import Annotated + @app.post("/api1") + def api1( + integer_or_null: Annotated[int | None, Body(embed=True)] = DEFAULT, + ) -> dict: + return {"received": integer_or_null} -@app.post("/api2") -def api2(integer_or_null: Annotated[Optional[int], Body(embed=True)] = DEFAULT) -> dict: - return {"received": integer_or_null} + endpoints.append("/api1") -@app.post("/api3") -def api3( - integer_or_null: Annotated[Union[int, None], Body(embed=True)] = DEFAULT, -) -> dict: - return {"received": integer_or_null} +if sys.hexversion >= 0x30900000: + from typing import Annotated + + @app.post("/api2") + def api2( + integer_or_null: Annotated[Optional[int], Body(embed=True)] = DEFAULT, + ) -> dict: + return {"received": integer_or_null} + + endpoints.append("/api2") + + @app.post("/api3") + def api3( + integer_or_null: Annotated[Union[int, None], Body(embed=True)] = DEFAULT, + ) -> dict: + return {"received": integer_or_null} + + endpoints.append("/api3") @app.post("/api4") @@ -30,10 +47,13 @@ def api4(integer_or_null: Optional[int] = Body(embed=True, default=DEFAULT)) -> return {"received": integer_or_null} +endpoints.append("/api4") + + client = TestClient(app) -@pytest.mark.parametrize("api", ["/api1", "/api2", "/api3", "/api4"]) +@pytest.mark.parametrize("api", endpoints) def test_api1_integer(api): response = client.post(api, json={"integer_or_null": 100}) assert response.status_code == 200, response.text