Coverage for tests / test_tutorial / test_custom_request_and_route / test_tutorial001.py: 100%
30 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
1import gzip 1abcd
2import importlib 1abcd
3import json 1abcd
5import pytest 1abcd
6from fastapi import Request 1abcd
7from fastapi.testclient import TestClient 1abcd
9from tests.utils import needs_py310 1abcd
12@pytest.fixture( 1abcd
13 name="client",
14 params=[
15 pytest.param("tutorial001_py310", marks=needs_py310),
16 pytest.param("tutorial001_an_py310", marks=needs_py310),
17 ],
18)
19def get_client(request: pytest.FixtureRequest): 1abcd
20 mod = importlib.import_module(f"docs_src.custom_request_and_route.{request.param}") 1rstuvwxyzABCDEFGHIJK
22 @mod.app.get("/check-class") 1rstuvwxyzABCDEFGHIJK
23 async def check_gzip_request(request: Request): 1rstuvwxyzABCDEFGHIJK
24 return {"request_class": type(request).__name__} 1LMNOPQRS
26 client = TestClient(mod.app) 1rstuvwxyzABCDEFGHIJK
27 return client 1rstuvwxyzABCDEFGHIJK
30@pytest.mark.parametrize("compress", [True, False]) 1abcd
31def test_gzip_request(client: TestClient, compress): 1abcd
32 n = 1000 1lemfgnhoipjqk
33 headers = {} 1lemfgnhoipjqk
34 body = [1] * n 1lemfgnhoipjqk
35 data = json.dumps(body).encode() 1lemfgnhoipjqk
36 if compress: 1lemfgnhoipjqk
37 data = gzip.compress(data) 1efghijk
38 headers["Content-Encoding"] = "gzip" 1efghijk
39 headers["Content-Type"] = "application/json" 1lemfgnhoipjqk
40 response = client.post("/sum", content=data, headers=headers) 1lemfgnhoipjqk
41 assert response.json() == {"sum": n} 1lemfgnhoipjqk
44def test_request_class(client: TestClient): 1abcd
45 response = client.get("/check-class") 1LMNOPQRS
46 assert response.json() == {"request_class": "GzipRequest"} 1LMNOPQRS