new_field.alias = field.alias # type: ignore[misc]
new_field.class_validators = field.class_validators # type: ignore[attr-defined]
new_field.default = field.default # type: ignore[misc]
+ new_field.default_factory = field.default_factory # type: ignore[attr-defined]
new_field.required = field.required # type: ignore[misc]
new_field.model_config = field.model_config # type: ignore[attr-defined]
new_field.field_info = field.field_info
--- /dev/null
+from fastapi import FastAPI
+from fastapi.testclient import TestClient
+from pydantic import BaseModel, Field
+
+app = FastAPI()
+
+
+class ResponseModel(BaseModel):
+ code: int = 200
+ message: str = Field(default_factory=lambda: "Successful operation.")
+
+
+@app.get(
+ "/response_model_has_default_factory_return_dict",
+ response_model=ResponseModel,
+)
+async def response_model_has_default_factory_return_dict():
+ return {"code": 200}
+
+
+@app.get(
+ "/response_model_has_default_factory_return_model",
+ response_model=ResponseModel,
+)
+async def response_model_has_default_factory_return_model():
+ return ResponseModel()
+
+
+client = TestClient(app)
+
+
+def test_response_model_has_default_factory_return_dict():
+ response = client.get("/response_model_has_default_factory_return_dict")
+
+ assert response.status_code == 200, response.text
+
+ assert response.json()["code"] == 200
+ assert response.json()["message"] == "Successful operation."
+
+
+def test_response_model_has_default_factory_return_model():
+ response = client.get("/response_model_has_default_factory_return_model")
+
+ assert response.status_code == 200, response.text
+
+ assert response.json()["code"] == 200
+ assert response.json()["message"] == "Successful operation."