code: def test_fit(self, generate_regression_data):
      ctree = self.prepare_model()
      (
          X_train,
          X_test,
          y_train,
          y_test,
          treatment_train,
          treatment_test,
      ) = self.prepare_data(generate_regression_data)
      ctree.fit(X=X_train, treatment=treatment_train, y=y_train)
      df_result = pd.DataFrame(
          {
              "ctree_ite_pred": ctree.predict(X_test),
              "is_treated": treatment_test,
              "treatment_effect": self.df_test["treatment_effect"],
          }
      )
      df_qini = qini_score(
          df_result,
          outcome_col="outcome",
          treatment_col="is_treated",
          treatment_effect_col="treatment_effect",
      )
      assert df_qini["ctree_ite_pred"] > df_qini["Random"]
  
imports: import multiprocessing
  from abc import abstractmethod
  import pandas
  import pytest
  from sklearn.model_selection import train_test_split
  from causalml.inference.tree import CausalTreeRegressor, CausalRandomForestRegressor
  from causalml.metrics import ape
  from causalml.metrics import qini_score
  from .const import RANDOM_SEED, ERROR_THRESHOLD
label_desc: Use image node_id 2 for calling the TestCausalTreeRegressor obj's underlying member method code with example usage: obj.test_fit(generate_regression_data) without return types