code: def test_get_split_df():
      with mock.patch(
          "mlflow.recipes.steps.split._SPLIT_HASH_BUCKET_NUM", 6
      ):
          split_ratios = [3, 2, 1]
          hash_buckets = pd.Series([0.3, 0.9, 0.1, 0.7, 0.2, 0.6])
          dataset = pd.DataFrame({"v": [10, 20, 30, 40, 50, 60]})
  
          train_df, val_df, test_df = _get_split_df(
              dataset, hash_buckets, split_ratios
          )
  
          assert train_df.v.tolist() == [10, 30, 50]
          assert val_df.v.tolist() == [40, 60]
          assert test_df.v.tolist() == [20]
  
imports: from pathlib import Path
  from unittest import mock
  from unittest.mock import Mock
  import numpy
  import pandas
  import pytest
  import mlflow
  from mlflow.environment_variables import MLFLOW_RECIPES_EXECUTION_DIRECTORY
  from mlflow.exceptions import MlflowException
  from mlflow.recipes.steps.split import _OUTPUT_TEST_FILE_NAME, _OUTPUT_TRAIN_FILE_NAME, _OUTPUT_VALIDATION_FILE_NAME, SplitStep, SplitValues, _get_split_df, _hash_pandas_dataframe, _make_elem_hashable, _validate_user_code_output
  from mlflow.recipes.utils import _RECIPE_CONFIG_FILE_NAME
  from mlflow.utils.file_utils import read_yaml
label_desc: Use image node_id 6 for calling a global function with example usage: test_get_split_df() without return types