code: def test_cross_validate_gives_a_useful_error_for_model_with_no_data(
      self,
  ) -> None:
      exp = get_branin_experiment()
      sobol = Models.SOBOL(
          experiment=exp, search_space=exp.search_space
      )
      with self.assertRaisesRegex(ValueError, "no training data"):
          cross_validate(model=sobol)
  
imports: from typing import List
  from unittest import mock
  import numpy
  from ax.core.metric import Metric
  from ax.core.objective import MultiObjective, Objective
  from ax.core.observation import Observation, ObservationData, ObservationFeatures
  from ax.core.optimization_config import MultiObjectiveOptimizationConfig, OptimizationConfig
  from ax.core.outcome_constraint import OutcomeConstraint
  from ax.core.types import ComparisonOp
  from ax.modelbridge.cross_validation import assess_model_fit, compute_diagnostics, cross_validate, cross_validate_by_trial, CVDiagnostics, CVResult, has_good_opt_config_model_fit, SingleDiagnosticBestModelSelector
  from ax.modelbridge.registry import Models
  from ax.utils.common.testutils import TestCase
  from ax.utils.testing.core_stubs import get_branin_experiment
label_desc: Use image node_id 4 for calling the CrossValidationTest obj's underlying member method code with example usage: obj.test_cross_validate_gives_a_useful_error_for_model_with_no_data() without return types