MCPcopy
hub / github.com/openai/openai-agents-python / test_class_based_functions

Function test_class_based_functions

tests/test_function_schema.py:267–338  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

265
266
267def test_class_based_functions():
268 context = RunContextWrapper(context="test")
269
270 # Instance method
271 instance = MyClass()
272 func_schema = function_schema(instance.foo)
273 assert isinstance(func_schema.params_json_schema, dict)
274 assert func_schema.params_json_schema.get("title") == "foo_args"
275
276 input = {"a": 1, "b": 2}
277 parsed = func_schema.params_pydantic_model(**input)
278 args, kwargs_dict = func_schema.to_call_args(parsed)
279 result = instance.foo(*args, **kwargs_dict)
280 assert result == 3
281
282 # Instance method with context
283 func_schema = function_schema(instance.foo_ctx)
284 assert isinstance(func_schema.params_json_schema, dict)
285 assert func_schema.params_json_schema.get("title") == "foo_ctx_args"
286 assert func_schema.takes_context
287
288 input = {"a": 1, "b": 2}
289 parsed = func_schema.params_pydantic_model(**input)
290 args, kwargs_dict = func_schema.to_call_args(parsed)
291 result = instance.foo_ctx(context, *args, **kwargs_dict)
292 assert result == 3
293
294 # Class method
295 func_schema = function_schema(MyClass.bar)
296 assert isinstance(func_schema.params_json_schema, dict)
297 assert func_schema.params_json_schema.get("title") == "bar_args"
298
299 input = {"a": 1, "b": 2}
300 parsed = func_schema.params_pydantic_model(**input)
301 args, kwargs_dict = func_schema.to_call_args(parsed)
302 result = MyClass.bar(*args, **kwargs_dict)
303 assert result == 3
304
305 # Class method with context
306 func_schema = function_schema(MyClass.bar_ctx)
307 assert isinstance(func_schema.params_json_schema, dict)
308 assert func_schema.params_json_schema.get("title") == "bar_ctx_args"
309 assert func_schema.takes_context
310
311 input = {"a": 1, "b": 2}
312 parsed = func_schema.params_pydantic_model(**input)
313 args, kwargs_dict = func_schema.to_call_args(parsed)
314 result = MyClass.bar_ctx(context, *args, **kwargs_dict)
315 assert result == 3
316
317 # Static method
318 func_schema = function_schema(MyClass.baz)
319 assert isinstance(func_schema.params_json_schema, dict)
320 assert func_schema.params_json_schema.get("title") == "baz_args"
321
322 input = {"a": 1, "b": 2}
323 parsed = func_schema.params_pydantic_model(**input)
324 args, kwargs_dict = func_schema.to_call_args(parsed)

Callers

nothing calls this directly

Calls 11

fooMethod · 0.95
foo_ctxMethod · 0.95
RunContextWrapperClass · 0.90
function_schemaFunction · 0.90
MyClassClass · 0.85
to_call_argsMethod · 0.80
barMethod · 0.80
bar_ctxMethod · 0.80
bazMethod · 0.80
baz_ctxMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected