Skip to content

Commit 4832c01

Browse files
author
Saanika Gupta
committed
Replace help() with inspect.signature() in test_dsl_group - making the test more robust and independent of python version
1 parent 485b77e commit 4832c01

File tree

1 file changed

+43
-29
lines changed

1 file changed

+43
-29
lines changed

sdk/ml/azure-ai-ml/tests/dsl/unittests/test_dsl_group.py

Lines changed: 43 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import inspect
12
import sys
23
from enum import Enum as PyEnum
34
from io import StringIO
@@ -71,9 +72,6 @@ def test_restore_flattened_inputs(self) -> None:
7172
assert isinstance(result.ab, _GroupAttrDict)
7273
assert isinstance(result.ab.c, PipelineInput)
7374

74-
@pytest.mark.skipif(
75-
condition=sys.version_info >= (3, 13), reason="historical implementation doesn't support Python 3.13+"
76-
)
7775
def test_auto_generated_functions(self) -> None:
7876
class EnumOps(PyEnum):
7977
Option1 = "Option1"
@@ -89,15 +87,27 @@ class MixedGroup:
8987

9088
# __init__ func test
9189
assert hasattr(MixedGroup, "__init__") is True
92-
original_out = sys.stdout
93-
sys.stdout = stdout_str_IO = StringIO()
94-
help(MixedGroup.__init__)
95-
assert (
96-
"__init__(self,*,int_param:int=None,str_param:str=None,enum_param:str=None,"
97-
"str_default_param:str='test',optional_int_param:int=5)->None"
98-
in remove_extra_character(stdout_str_IO.getvalue())
99-
)
100-
sys.stdout = original_out
90+
sig = inspect.signature(MixedGroup.__init__)
91+
params = sig.parameters
92+
93+
# Verify all expected parameters exist
94+
assert "self" in params
95+
assert "int_param" in params
96+
assert "str_param" in params
97+
assert "enum_param" in params
98+
assert "str_default_param" in params
99+
assert "optional_int_param" in params
100+
101+
# Verify default values
102+
assert params["int_param"].default is None
103+
assert params["str_param"].default is None
104+
assert params["enum_param"].default is None
105+
assert params["str_default_param"].default == "test"
106+
assert params["optional_int_param"].default == 5
107+
108+
# Verify keyword-only parameters (after *)
109+
assert params["int_param"].kind == inspect.Parameter.KEYWORD_ONLY
110+
assert params["str_param"].kind == inspect.Parameter.KEYWORD_ONLY
101111

102112
# __repr__ func test
103113
var = MixedGroup(
@@ -415,9 +425,6 @@ def my_pipeline(my_inputs: PortInputs):
415425

416426
assert "Only primitive types can be used as input of group, got uri_file" in str(e.value)
417427

418-
@pytest.mark.skipif(
419-
condition=sys.version_info >= (3, 13), reason="historical implementation doesn't support Python 3.13+"
420-
)
421428
def test_group_defaults_with_outputs(self):
422429
@group
423430
class MixedGroup:
@@ -428,21 +435,28 @@ class MixedGroup:
428435
optional_int_param: Input(type="integer", optional=True) = 5
429436
output_folder: Output(type="uri_folder")
430437

438+
# __init__ func test
431439
assert hasattr(MixedGroup, "__init__") is True
432-
original_out = sys.stdout
433-
sys.stdout = stdout_str_IO = StringIO()
434-
help(MixedGroup.__init__)
435-
assert (
436-
"__init__(self,*,"
437-
"int_param:int=None,"
438-
"str_default_param:str='test',"
439-
"str_param:str=None,"
440-
"input_folder:{'type':'uri_folder'}=None,"
441-
"optional_int_param:int=5,"
442-
"output_folder:{'type':'uri_folder'}=None)"
443-
"->None" in remove_extra_character(stdout_str_IO.getvalue())
444-
)
445-
sys.stdout = original_out
440+
sig = inspect.signature(MixedGroup.__init__)
441+
params = sig.parameters
442+
443+
# Verify all expected parameters exist
444+
assert "int_param" in params
445+
assert "str_default_param" in params
446+
assert "str_param" in params
447+
assert "input_folder" in params
448+
assert "optional_int_param" in params
449+
assert "output_folder" in params
450+
451+
# Verify default values
452+
assert params["int_param"].default is None
453+
assert params["str_default_param"].default == "test"
454+
assert params["str_param"].default is None
455+
assert params["optional_int_param"].default == 5
456+
# input_folder and output_folder should have None as default
457+
assert params["input_folder"].default is None
458+
assert params["output_folder"].default is None
459+
446460
# __repr__ func test
447461
var = MixedGroup(
448462
int_param=1, str_param="test-str", input_folder=Input(path="input"), output_folder=Output(path="output")

0 commit comments

Comments
 (0)