diff --git a/oneflow/python/test/modules/automated_test_util.py b/oneflow/python/test/modules/automated_test_util.py index 0459756ab4acd4b02673c3d317a345be76428956..7359cf3f7e4735fe45df2597dddeaf2015993cb4 100644 --- a/oneflow/python/test/modules/automated_test_util.py +++ b/oneflow/python/test/modules/automated_test_util.py @@ -174,13 +174,29 @@ def test_against_pytorch( else: pytorch_call = eval(f"torch.{pytorch_callable_name}") + Spec = namedtuple( + "spec", + "args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotations", + ) + if has_full_args_spec(pytorch_call): - spec = inspect.getfullargspec(pytorch_call) - else: - Spec = namedtuple( - "spec", - "args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotations", + tmp_spec = inspect.getfullargspec(pytorch_call) + new_defaults = tmp_spec.defaults + if new_defaults is None: + new_defaults = [] + new_kwonlydefaults = tmp_spec.kwonlydefaults + if new_kwonlydefaults is None: + new_kwonlydefaults = [] + spec = Spec( + tmp_spec.args, + tmp_spec.varargs, + tmp_spec.varkw, + new_defaults, + tmp_spec.kwonlyargs, + new_kwonlydefaults, + tmp_spec.annotations, ) + else: args = list(extra_annotations.keys()) + list(extra_defaults.keys()) spec = Spec(args, None, None, [], [], {}, {}) diff --git a/oneflow/python/test/modules/test_constantpad2d.py b/oneflow/python/test/modules/test_constantpad2d.py index a29e7c96ad4671b843367aac4803c14adf1d44eb..4f351ab8a92a2925b06b9ecb4541459558ff578c 100644 --- a/oneflow/python/test/modules/test_constantpad2d.py +++ b/oneflow/python/test/modules/test_constantpad2d.py @@ -19,6 +19,7 @@ from collections import OrderedDict import numpy as np import oneflow.experimental as flow +from automated_test_util import * from test_util import ( GenArgList, FlattenArray, @@ -111,6 +112,23 @@ class TestConstantPad2dModule(flow.unittest.TestCase): for arg in GenArgList(arg_dict): _test_ConstantPad2d(test_case, *arg) + def test_with_random_data(test_case): + for device in ["cpu", "cuda"]: + spatial_size = np.random.randint(10, 20) + test_module_against_pytorch( + test_case, + "nn.ConstantPad2d", + extra_annotations={"padding": int, "value": float}, + extra_generators={ + "input": random_tensor( + ndim=4, dim2=spatial_size, dim3=spatial_size + ), + "padding": random(0, 6), + "value": random(0, 6), + }, + device=device, + ) + if __name__ == "__main__": unittest.main()