Coverage for tests / test_datetime_custom_encoder.py: 100%

20 statements  

« prev     ^ index     » next       coverage.py v7.13.3, created at 2026-04-06 01:24 +0000

1from datetime import datetime, timezone 1efgh

2 

3from fastapi import FastAPI 1efgh

4from fastapi.testclient import TestClient 1efgh

5from pydantic import BaseModel 1efgh

6 

7 

8def test_pydanticv2(): 1efgh

9 from pydantic import field_serializer 1adbc

10 

11 class ModelWithDatetimeField(BaseModel): 1adbc

12 dt_field: datetime 1abc

13 

14 @field_serializer("dt_field") 1adbc

15 def serialize_datetime(self, dt_field: datetime): 1adbc

16 return dt_field.replace(microsecond=0, tzinfo=timezone.utc).isoformat() 1adbc

17 

18 app = FastAPI() 1adbc

19 model = ModelWithDatetimeField(dt_field=datetime(2019, 1, 1, 8)) 1adbc

20 

21 @app.get("/model", response_model=ModelWithDatetimeField) 1adbc

22 def get_model(): 1adbc

23 return model 1adbc

24 

25 client = TestClient(app) 1adbc

26 with client: 1adbc

27 response = client.get("/model") 1adbc

28 assert response.json() == {"dt_field": "2019-01-01T08:00:00+00:00"} 1adbc