@@ -165,6 +165,30 @@ def get_request_type(entrypoint_path: str) -> Optional[Any]:
165165 return request_type
166166
167167
168+ def _generate_model_sample_data (model_type ):
169+ """Generate sample data for all fields in a Pydantic model.
170+
171+ Args:
172+ model_type: A Pydantic model class
173+
174+ Returns:
175+ Dictionary with sample data for all fields
176+ """
177+ from pydantic_core import PydanticUndefined
178+
179+ sample_data = {}
180+ for field_name , field_info in model_type .model_fields .items ():
181+ # Check if field has a real default value
182+ if field_info .default is not PydanticUndefined :
183+ sample_data [field_name ] = field_info .default
184+ else :
185+ # Required field or field without default - generate sample
186+ sample_data [field_name ] = generate_sample_value (
187+ field_info .annotation , field_name
188+ )
189+ return sample_data
190+
191+
168192def generate_sample_value (field_type , field_name : str ):
169193 """Generate a sample value based on field type.
170194
@@ -197,14 +221,8 @@ def generate_sample_value(field_type, field_name: str):
197221 elif field_type is bool :
198222 return True
199223 elif hasattr (field_type , "model_fields" ):
200- # Nested Pydantic model
201- nested_data = {}
202- for nested_field_name , nested_field_info in field_type .model_fields .items ():
203- if nested_field_info .is_required ():
204- nested_data [nested_field_name ] = generate_sample_value (
205- nested_field_info .annotation , nested_field_name
206- )
207- return nested_data
224+ # Nested Pydantic model - use shared helper
225+ return _generate_model_sample_data (field_type )
208226 else :
209227 return None
210228
@@ -228,16 +246,8 @@ def generate_test_json(entrypoint_path: str, output_path: str) -> None:
228246 if not hasattr (request_type , "model_fields" ):
229247 raise ValueError (f"Request parameter type must be a Pydantic model" )
230248
231- # Generate sample data
232- sample_data = {}
233- for field_name , field_info in request_type .model_fields .items ():
234- if field_info .is_required ():
235- sample_data [field_name ] = generate_sample_value (
236- field_info .annotation , field_name
237- )
238- elif field_info .default is not None :
239- sample_data [field_name ] = field_info .default
240-
249+ # Generate sample data for ALL fields (use defaults where available)
250+ sample_data = _generate_model_sample_data (request_type )
241251 sample_instance = request_type (** sample_data )
242252
243253 # Write to file
0 commit comments