Coverage for tests/test_required_noneable.py: 100%
38 statements
« prev ^ index » next coverage.py v7.6.1, created at 2025-05-06 08:24 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2025-05-06 08:24 +0000
1from typing import Union 1abcdef
3from fastapi import Body, FastAPI, Query 1abcdef
4from fastapi.testclient import TestClient 1abcdef
6app = FastAPI() 1abcdef
9@app.get("/query") 1abcdef
10def read_query(q: Union[str, None]): 1abcdef
11 return q 1ghijkl
14@app.get("/explicit-query") 1abcdef
15def read_explicit_query(q: Union[str, None] = Query()): 1abcdef
16 return q 1mnopqr
19@app.post("/body-embed") 1abcdef
20def send_body_embed(b: Union[str, None] = Body(embed=True)): 1abcdef
21 return b 1stuvwx
24client = TestClient(app) 1abcdef
27def test_required_nonable_query_invalid(): 1abcdef
28 response = client.get("/query") 1yzABCD
29 assert response.status_code == 422 1yzABCD
32def test_required_noneable_query_value(): 1abcdef
33 response = client.get("/query", params={"q": "foo"}) 1ghijkl
34 assert response.status_code == 200 1ghijkl
35 assert response.json() == "foo" 1ghijkl
38def test_required_nonable_explicit_query_invalid(): 1abcdef
39 response = client.get("/explicit-query") 1EFGHIJ
40 assert response.status_code == 422 1EFGHIJ
43def test_required_nonable_explicit_query_value(): 1abcdef
44 response = client.get("/explicit-query", params={"q": "foo"}) 1mnopqr
45 assert response.status_code == 200 1mnopqr
46 assert response.json() == "foo" 1mnopqr
49def test_required_nonable_body_embed_no_content(): 1abcdef
50 response = client.post("/body-embed") 1KLMNOP
51 assert response.status_code == 422 1KLMNOP
54def test_required_nonable_body_embed_invalid(): 1abcdef
55 response = client.post("/body-embed", json={"invalid": "invalid"}) 1QRSTUV
56 assert response.status_code == 422 1QRSTUV
59def test_required_noneable_body_embed_value(): 1abcdef
60 response = client.post("/body-embed", json={"b": "foo"}) 1stuvwx
61 assert response.status_code == 200 1stuvwx
62 assert response.json() == "foo" 1stuvwx