code: def test_execute_report_2(self):
      tmp_dir_path = tempfile.mkdtemp()
  
      execute_report(
          working_dir=tmp_dir_path,
          explainer=self.xpl,
          project_info_file=os.path.join(
              current_path, "../data/metadata.yaml"
          ),
          x_train=self.df[["x1", "x2", "x3", "x4"]],
          config=None,
          notebook_path=None,
      )
      assert os.path.exists(os.path.join(tmp_dir_path, "x_train.csv"))
      assert os.path.exists(
          os.path.join(tmp_dir_path, "smart_explainer.pickle")
      )
      assert os.path.exists(
          os.path.join(tmp_dir_path, "base_report.ipynb")
      )
  
      shutil.rmtree(tmp_dir_path)
  
file_path: shapash/tests/integration_tests/test_report_generation.py
imports: import unittest
  import tempfile
  import shutil
  import numpy
  import os
  import pandas
  import catboost
  import category_encoders
  from shapash import SmartExplainer
  from shapash.report.generation import execute_report, export_and_save_report
  from category_encoders import OrdinalEncoder
label_desc: Use image node_id 3 for calling the TestGeneration obj's underlying member method code with example usage: obj.test_execute_report_2() without return types