def METHOD_NAME(self, draw):
    input_shape = draw(
        st.lists(
            st.integers(
                min_value=20, max_value=30), min_size=4, max_size=4))
    kernel_size = draw(
        st.lists(
            st.integers(
                min_value=1, max_value=7), min_size=4, max_size=4))
    data_format = "NCHW"
    groups = draw(st.integers(min_value=1, max_value=4))
    muti1 = draw(st.integers(min_value=1, max_value=4))
    kernel_size[0] = groups * muti1
    input_shape[1] = kernel_size[1] * groups
    strides = draw(
        st.lists(
            st.integers(
                min_value=1, max_value=5), min_size=1, max_size=2))
    if len(strides) == 1:
        strides = strides[0]
        if strides > kernel_size[2]:
            strides = kernel_size[2]
        if strides > kernel_size[3]:
            strides = kernel_size[3]
    else:
        if strides[0] > kernel_size[2]:
            strides[0] = kernel_size[2]
        if strides[1] > kernel_size[3]:
            strides[1] = kernel_size[3]
    padding_type = draw(st.sampled_from(["str", "list", "int", "tuple"]))
    padding = None
    if padding_type == "str":
        padding = draw(st.sampled_from(["SAME", "VALID"]))
    elif padding_type == "int":
        padding = draw(st.integers(min_value=1, max_value=5))
    elif padding_type == "tuple":
        padding1 = np.expand_dims(
            np.array(
                draw(
                    st.lists(
                        st.integers(
                            min_value=1, max_value=5),
                        min_size=2,
                        max_size=2))),
            axis=0).tolist()
        padding2 = np.expand_dims(
            np.array(
                draw(
                    st.lists(
                        st.integers(
                            min_value=1, max_value=5),
                        min_size=2,
                        max_size=2))),
            axis=0).tolist()
        if data_format == "NCHW":
            padding = [[0, 0]] + [[0, 0]] + padding1 + padding2
        else:
            padding = [[0, 0]] + padding1 + padding2 + [[0, 0]]
    elif padding_type == "list":
        if draw(st.booleans()):
            padding = draw(
                st.lists(
                    st.integers(
                        min_value=1, max_value=5),
                    min_size=2,
                    max_size=2))
        else:
            padding = draw(
                st.lists(
                    st.integers(
                        min_value=1, max_value=5),
                    min_size=4,
                    max_size=4))
    dilations = draw(
        st.lists(
            st.integers(
                min_value=1, max_value=3), min_size=1, max_size=2))
    if len(dilations) == 1:
        dilations = dilations[0]
    if padding == "SAME":
        dilations = 1
    config = {
        "op_names": ["conv2d"],
        "test_data_shapes": [input_shape, kernel_size],
        "test_data_types": [['float32'], ['float32']],
        "opset_version": [7, 9, 15],
        "input_spec_shape": [[-1, input_shape[1], -1, -1], kernel_size],
        "data_format": data_format,
        "stride": strides,
        "dilation": dilations,
        "padding": padding,
        "groups": groups,
        "input_shape": input_shape,
        "kernel_size": kernel_size,
        "delta": 1e-4,
        "rtol": 1e-4
    }
    models = Net(config)
    return (config, models)