def METHOD_NAME(self, draw):
    in_shape_tmp = draw(
        st.lists(
            st.integers(
                min_value=1, max_value=10), min_size=1, max_size=4))
    in_shape = draw(st.sampled_from([in_shape_tmp, []]))
    # BOOL = 0;INT16 = 1;INT32 = 2;INT64 = 3;FP16 = 4;FP32 = 5;FP64 = 6;
    in_dtype = draw(st.sampled_from([0, 2, 3, 5]))
    out_dtype = draw(st.sampled_from([0, 2, 3, 5]))
    # BOOL and INT16 and FP16 and FP64 paddle-lite doesn't support
    def generate_input(*args, **kwargs):
        if in_dtype == 0:
            return np.random.random(in_shape).astype(np.bool_)
        elif in_dtype == 1:
            return np.random.random(in_shape).astype(np.int16)
        elif in_dtype == 2:
            return np.random.random(in_shape).astype(np.int32)
        elif in_dtype == 3:
            return np.random.random(in_shape).astype(np.int64)
        elif in_dtype == 4:
            return np.random.random(in_shape).astype(np.float16)
        elif in_dtype == 5:
            return np.random.random(in_shape).astype(np.float32)
        else:
            print("in_dtype is error! ", in_dtype)
    cast_op = OpConfig(
        type="cast",
        inputs={"X": ["input_data"]},
        outputs={"Out": ["output_data"]},
        attrs={"in_dtype": in_dtype,
               "out_dtype": out_dtype})
    program_config = ProgramConfig(
        ops=[cast_op],
        weights={},
        inputs={
            "input_data": TensorConfig(data_gen=partial(generate_input))
        },
        outputs=["output_data"])
    in_dtype = program_config.ops[0].attrs["in_dtype"]
    out_dtype = program_config.ops[0].attrs["out_dtype"]
    assume(in_dtype != 0)
    assume(out_dtype != 0)
    return program_config