Coverage for tests / test_datetime_custom_encoder.py: 100%

20 statements  

« prev     ^ index     » next       coverage.py v7.13.3, created at 2026-02-12 18:15 +0000

1from datetime import datetime, timezone 1defg

2 

3from fastapi import FastAPI 1defg

4from fastapi.testclient import TestClient 1defg

5from pydantic import BaseModel 1defg

6 

7 

8def test_pydanticv2(): 1defg

9 from pydantic import field_serializer 1abc

10 

11 class ModelWithDatetimeField(BaseModel): 1abc

12 dt_field: datetime 1abc

13 

14 @field_serializer("dt_field") 1abc

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

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

17 

18 app = FastAPI() 1abc

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

20 

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

22 def get_model(): 1abc

23 return model 1abc

24 

25 client = TestClient(app) 1abc

26 with client: 1abc

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

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