Coverage for tests / test_default_response_class_router.py: 100%
135 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-04-06 01:24 +0000
« prev ^ index » next coverage.py v7.13.3, created at 2026-04-06 01:24 +0000
1from fastapi import APIRouter, FastAPI 1abcd
2from fastapi.responses import HTMLResponse, JSONResponse, PlainTextResponse 1abcd
3from fastapi.testclient import TestClient 1abcd
6class OverrideResponse(JSONResponse): 1abcd
7 media_type = "application/x-override" 1abcd
10app = FastAPI() 1abcd
11router_a = APIRouter() 1abcd
12router_a_a = APIRouter() 1abcd
13router_a_b_override = APIRouter() # Overrides default class 1abcd
14router_b_override = APIRouter() # Overrides default class 1abcd
15router_b_a = APIRouter() 1abcd
16router_b_a_c_override = APIRouter() # Overrides default class again 1abcd
19@app.get("/") 1abcd
20def get_root(): 1abcd
21 return {"msg": "Hello World"} 1efgh
24@app.get("/override", response_class=PlainTextResponse) 1abcd
25def get_path_override(): 1abcd
26 return "Hello World" 1ijkl
29@router_a.get("/") 1abcd
30def get_a(): 1abcd
31 return {"msg": "Hello A"} 1mnop
34@router_a.get("/override", response_class=PlainTextResponse) 1abcd
35def get_a_path_override(): 1abcd
36 return "Hello A" 1qrst
39@router_a_a.get("/") 1abcd
40def get_a_a(): 1abcd
41 return {"msg": "Hello A A"} 1uvwx
44@router_a_a.get("/override", response_class=PlainTextResponse) 1abcd
45def get_a_a_path_override(): 1abcd
46 return "Hello A A" 1yzAB
49@router_a_b_override.get("/") 1abcd
50def get_a_b(): 1abcd
51 return "Hello A B" 1CDEF
54@router_a_b_override.get("/override", response_class=HTMLResponse) 1abcd
55def get_a_b_path_override(): 1abcd
56 return "Hello A B" 1GHIJ
59@router_b_override.get("/") 1abcd
60def get_b(): 1abcd
61 return "Hello B" 1KLMN
64@router_b_override.get("/override", response_class=HTMLResponse) 1abcd
65def get_b_path_override(): 1abcd
66 return "Hello B" 1OPQR
69@router_b_a.get("/") 1abcd
70def get_b_a(): 1abcd
71 return "Hello B A" 1STUV
74@router_b_a.get("/override", response_class=HTMLResponse) 1abcd
75def get_b_a_path_override(): 1abcd
76 return "Hello B A" 1WXYZ
79@router_b_a_c_override.get("/") 1abcd
80def get_b_a_c(): 1abcd
81 return "Hello B A C" 10123
84@router_b_a_c_override.get("/override", response_class=OverrideResponse) 1abcd
85def get_b_a_c_path_override(): 1abcd
86 return {"msg": "Hello B A C"} 14567
89router_b_a.include_router( 1abcd
90 router_b_a_c_override, prefix="/c", default_response_class=HTMLResponse
91)
92router_b_override.include_router(router_b_a, prefix="/a") 1abcd
93router_a.include_router(router_a_a, prefix="/a") 1abcd
94router_a.include_router( 1abcd
95 router_a_b_override, prefix="/b", default_response_class=PlainTextResponse
96)
97app.include_router(router_a, prefix="/a") 1abcd
98app.include_router( 1abcd
99 router_b_override, prefix="/b", default_response_class=PlainTextResponse
100)
103client = TestClient(app) 1abcd
105json_type = "application/json" 1abcd
106text_type = "text/plain; charset=utf-8" 1abcd
107html_type = "text/html; charset=utf-8" 1abcd
108override_type = "application/x-override" 1abcd
111def test_app(): 1abcd
112 with client: 1efgh
113 response = client.get("/") 1efgh
114 assert response.json() == {"msg": "Hello World"} 1efgh
115 assert response.headers["content-type"] == json_type 1efgh
118def test_app_override(): 1abcd
119 with client: 1ijkl
120 response = client.get("/override") 1ijkl
121 assert response.content == b"Hello World" 1ijkl
122 assert response.headers["content-type"] == text_type 1ijkl
125def test_router_a(): 1abcd
126 with client: 1mnop
127 response = client.get("/a") 1mnop
128 assert response.json() == {"msg": "Hello A"} 1mnop
129 assert response.headers["content-type"] == json_type 1mnop
132def test_router_a_override(): 1abcd
133 with client: 1qrst
134 response = client.get("/a/override") 1qrst
135 assert response.content == b"Hello A" 1qrst
136 assert response.headers["content-type"] == text_type 1qrst
139def test_router_a_a(): 1abcd
140 with client: 1uvwx
141 response = client.get("/a/a") 1uvwx
142 assert response.json() == {"msg": "Hello A A"} 1uvwx
143 assert response.headers["content-type"] == json_type 1uvwx
146def test_router_a_a_override(): 1abcd
147 with client: 1yzAB
148 response = client.get("/a/a/override") 1yzAB
149 assert response.content == b"Hello A A" 1yzAB
150 assert response.headers["content-type"] == text_type 1yzAB
153def test_router_a_b(): 1abcd
154 with client: 1CDEF
155 response = client.get("/a/b") 1CDEF
156 assert response.content == b"Hello A B" 1CDEF
157 assert response.headers["content-type"] == text_type 1CDEF
160def test_router_a_b_override(): 1abcd
161 with client: 1GHIJ
162 response = client.get("/a/b/override") 1GHIJ
163 assert response.content == b"Hello A B" 1GHIJ
164 assert response.headers["content-type"] == html_type 1GHIJ
167def test_router_b(): 1abcd
168 with client: 1KLMN
169 response = client.get("/b") 1KLMN
170 assert response.content == b"Hello B" 1KLMN
171 assert response.headers["content-type"] == text_type 1KLMN
174def test_router_b_override(): 1abcd
175 with client: 1OPQR
176 response = client.get("/b/override") 1OPQR
177 assert response.content == b"Hello B" 1OPQR
178 assert response.headers["content-type"] == html_type 1OPQR
181def test_router_b_a(): 1abcd
182 with client: 1STUV
183 response = client.get("/b/a") 1STUV
184 assert response.content == b"Hello B A" 1STUV
185 assert response.headers["content-type"] == text_type 1STUV
188def test_router_b_a_override(): 1abcd
189 with client: 1WXYZ
190 response = client.get("/b/a/override") 1WXYZ
191 assert response.content == b"Hello B A" 1WXYZ
192 assert response.headers["content-type"] == html_type 1WXYZ
195def test_router_b_a_c(): 1abcd
196 with client: 10123
197 response = client.get("/b/a/c") 10123
198 assert response.content == b"Hello B A C" 10123
199 assert response.headers["content-type"] == html_type 10123
202def test_router_b_a_c_override(): 1abcd
203 with client: 14567
204 response = client.get("/b/a/c/override") 14567
205 assert response.json() == {"msg": "Hello B A C"} 14567
206 assert response.headers["content-type"] == override_type 14567