Coverage for tests/test_tutorial/test_custom_request_and_route/test_tutorial001.py: 100%

25 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2025-12-04 08:29 +0000

1import gzip 1abcdefg

2import json 1abcdefg

3 

4import pytest 1abcdefg

5from fastapi import Request 1abcdefg

6from fastapi.testclient import TestClient 1abcdefg

7 

8from docs_src.custom_request_and_route.tutorial001 import app 1abcdefg

9 

10 

11@app.get("/check-class") 1abcdefg

12async def check_gzip_request(request: Request): 1abcdefg

13 return {"request_class": type(request).__name__} 1opqrstu

14 

15 

16client = TestClient(app) 1abcdefg

17 

18 

19@pytest.mark.parametrize("compress", [True, False]) 1abcdefg

20def test_gzip_request(compress): 1abcdefg

21 n = 1000 1hijklmn

22 headers = {} 1hijklmn

23 body = [1] * n 1hijklmn

24 data = json.dumps(body).encode() 1hijklmn

25 if compress: 1hijklmn

26 data = gzip.compress(data) 1hijklmn

27 headers["Content-Encoding"] = "gzip" 1hijklmn

28 headers["Content-Type"] = "application/json" 1hijklmn

29 response = client.post("/sum", content=data, headers=headers) 1hijklmn

30 assert response.json() == {"sum": n} 1hijklmn

31 

32 

33def test_request_class(): 1abcdefg

34 response = client.get("/check-class") 1opqrstu

35 assert response.json() == {"request_class": "GzipRequest"} 1opqrstu