code: def test_bind_func_expr(self, mock_load_function_class_from_file):
      # setup
      func_expr = MagicMock(
          name="func_expr",
          alias=Alias("func_expr"),
          output_col_aliases=[],
      )
      func_expr.name.lower.return_value = "func_expr"
      obj1 = MagicMock()
      obj1.name.lower.return_value = "out1"
      obj2 = MagicMock()
      obj2.name.lower.return_value = "out2"
      func_output_objs = [obj1, obj2]
      function_obj = MagicMock()
  
      mock_catalog = MagicMock()
      mock_get_name = (
          mock_catalog().get_function_catalog_entry_by_name
      ) = MagicMock()
      mock_get_name.return_value = function_obj
  
      mock_get_function_outputs = (
          mock_catalog().get_function_io_catalog_output_entries
      ) = MagicMock()
      mock_get_function_outputs.return_value = func_output_objs
      mock_load_function_class_from_file.return_value.return_value = (
          "load_function_class_from_file"
      )
      # mock_get_file_checksum.return_value = function_obj.checksum
  
      # Case 1 set output
      func_expr.output = "out1"
      binder = StatementBinder(StatementBinderContext(mock_catalog))
      binder._bind_func_expr(func_expr)
  
      # mock_get_file_checksum.assert_called_with(function_obj.impl_file_path)
      mock_get_name.assert_called_with(func_expr.name)
      mock_get_function_outputs.assert_called_with(function_obj)
      mock_load_function_class_from_file.assert_called_with(
          function_obj.impl_file_path, function_obj.name
      )
      self.assertEqual(func_expr.output_objs, [obj1])
      self.assertEqual(
          func_expr.alias,
          Alias("func_expr", ["out1"]),
      )
      self.assertEqual(
          func_expr.function(), "load_function_class_from_file"
      )
  
      # Case 2 output not set
      func_expr.output = None
      func_expr.alias = Alias("func_expr")
      binder = StatementBinder(StatementBinderContext(mock_catalog))
      binder._bind_func_expr(func_expr)
  
      # mock_get_file_checksum.assert_called_with(function_obj.impl_file_path)
      mock_get_name.assert_called_with(func_expr.name)
      mock_get_function_outputs.assert_called_with(function_obj)
      mock_load_function_class_from_file.assert_called_with(
          function_obj.impl_file_path, function_obj.name
      )
      self.assertEqual(func_expr.output_objs, func_output_objs)
      self.assertEqual(
          func_expr.alias,
          Alias(
              "func_expr",
              ["out1", "out2"],
          ),
      )
      self.assertEqual(
          func_expr.function(), "load_function_class_from_file"
      )
  
      # Raise error if the class object cannot be created
      mock_load_function_class_from_file.reset_mock()
      mock_error_msg = "mock_load_function_class_from_file_error"
      mock_load_function_class_from_file.side_effect = MagicMock(
          side_effect=RuntimeError(mock_error_msg)
      )
      binder = StatementBinder(StatementBinderContext(mock_catalog))
      with self.assertRaises(BinderError) as cm:
          binder._bind_func_expr(func_expr)
      err_msg = (
          f"{mock_error_msg}. Please verify that the function class name in the "
          "implementation file matches the function name."
      )
      self.assertEqual(str(cm.exception), err_msg)
  
imports: import unittest
  from unittest.mock import MagicMock, Mock, patch
  from evadb.binder.binder_utils import BinderError
  from evadb.binder.statement_binder import StatementBinder
  from evadb.binder.statement_binder_context import StatementBinderContext
  from evadb.catalog.catalog_type import ColumnType, NdArrayType
  from evadb.catalog.models.utils import ColumnCatalogEntry
  from evadb.catalog.sql_config import IDENTIFIER_COLUMN
  from evadb.expression.function_expression import FunctionExpression
  from evadb.expression.tuple_value_expression import TupleValueExpression
  from evadb.parser.alias import Alias
  from evadb.parser.create_statement import ColumnDefinition
label_desc: Use image node_id 11 for calling the StatementBinderTests obj's underlying member method code with example usage: obj.test_bind_func_expr(mock_load_function_class_from_file) without return types