code: def test_feature_engineer_list_optimization_equality(
      env_boston, steps_0, steps_1
  ):
      """Test that the `feature_engineer` attribute constructed by an OptPro is the same whether given
      a list as input, or a :class:`~hyperparameter_hunter.feature_engineering.FeatureEngineer`
      """
      opt_0, opt_1, opt_2, opt_3 = GBRT(), GBRT(), GBRT(), GBRT()
      opt_0.forge_experiment(Ridge, feature_engineer=steps_0)
      opt_1.forge_experiment(
          Ridge, feature_engineer=FeatureEngineer(steps_1)
      )
      assert opt_0.feature_engineer == opt_1.feature_engineer
  
      # Repeat above, but switch which steps are wrapped in `FeatureEngineer`
      opt_2.forge_experiment(Ridge, feature_engineer=steps_1)
      opt_3.forge_experiment(
          Ridge, feature_engineer=FeatureEngineer(steps_0)
      )
      assert opt_2.feature_engineer == opt_3.feature_engineer
  
file_path: hyperparameter_hunter/tests/integration_tests/feature_engineering/test_support.py
imports: from hyperparameter_hunter import Environment, CVExperiment, FeatureEngineer, EngineerStep
  from hyperparameter_hunter import Categorical, GBRT
  from hyperparameter_hunter.utils.learning_utils import get_boston_data
  import pytest
  from sklearn.linear_model import Ridge
  from sklearn.model_selection import train_test_split
  from sklearn.preprocessing import QuantileTransformer, StandardScaler
label_desc: Use image node_id 10 for calling a global function with example usage: test_feature_engineer_list_optimization_equality(env_boston, steps_0, steps_1) without return types