Browse Source

make tests compatible with Python 3.8 and 3.9

Signed-off-by: merlinz01 <[email protected]>
pull/12135/head
merlinz01 9 months ago
parent
commit
41113e1199
  1. 46
      tests/test_none_passed_when_null_received.py

46
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 import pytest
from fastapi import Body, FastAPI from fastapi import Body, FastAPI
@ -7,22 +8,38 @@ from fastapi.testclient import TestClient
app = FastAPI() app = FastAPI()
DEFAULT = 1234567890 DEFAULT = 1234567890
endpoints = []
@app.post("/api1") if sys.hexversion >= 0x31000000:
def api1(integer_or_null: Annotated[int | None, Body(embed=True)] = DEFAULT) -> dict: from typing import Annotated
return {"received": integer_or_null}
@app.post("/api1")
def api1(
integer_or_null: Annotated[int | None, Body(embed=True)] = DEFAULT,
) -> dict:
return {"received": integer_or_null}
@app.post("/api2") endpoints.append("/api1")
def api2(integer_or_null: Annotated[Optional[int], Body(embed=True)] = DEFAULT) -> dict:
return {"received": integer_or_null}
@app.post("/api3") if sys.hexversion >= 0x30900000:
def api3( from typing import Annotated
integer_or_null: Annotated[Union[int, None], Body(embed=True)] = DEFAULT,
) -> dict: @app.post("/api2")
return {"received": integer_or_null} 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") @app.post("/api4")
@ -30,10 +47,13 @@ def api4(integer_or_null: Optional[int] = Body(embed=True, default=DEFAULT)) ->
return {"received": integer_or_null} return {"received": integer_or_null}
endpoints.append("/api4")
client = TestClient(app) client = TestClient(app)
@pytest.mark.parametrize("api", ["/api1", "/api2", "/api3", "/api4"]) @pytest.mark.parametrize("api", endpoints)
def test_api1_integer(api): def test_api1_integer(api):
response = client.post(api, json={"integer_or_null": 100}) response = client.post(api, json={"integer_or_null": 100})
assert response.status_code == 200, response.text assert response.status_code == 200, response.text

Loading…
Cancel
Save