code: def test_create_function(self):
      function_name = "DummyObjectDetector"
      create_function_query = """CREATE FUNCTION {}
                    INPUT  (Frame_Array NDARRAY UINT8(3, 256, 256))
                    OUTPUT (label NDARRAY STR(10))
                    TYPE  Classification
                    IMPL  'test/util.py';
          """
      # Try to create duplicate FUNCTION
      with self.assertRaises(ExecutorError):
          actual = execute_query_fetch_all(
              self.evadb, create_function_query.format(function_name)
          )
          expected = Batch(
              pd.DataFrame(
                  [f"Function {function_name} already exists."]
              )
          )
          self.assertEqual(actual, expected)
  
      # Try to create FUNCTION if not exists
      actual = execute_query_fetch_all(
          self.evadb,
          create_function_query.format(
              "IF NOT EXISTS " + function_name
          ),
      )
      expected = Batch(
          pd.DataFrame(
              [
                  f"Function {function_name} already exists, nothing added."
              ]
          )
      )
      self.assertEqual(actual, expected)
  
imports: import tempfile
  import unittest
  from test.util import DummyObjectDetector, create_dummy_batches, create_sample_video, file_remove, get_evadb_for_testing, shutdown_ray
  import numpy
  import pandas
  import pytest
  from evadb.binder.binder_utils import BinderError
  from evadb.catalog.catalog_type import ColumnType, NdArrayType
  from evadb.executor.executor_utils import ExecutorError
  from evadb.models.storage.batch import Batch
  from evadb.server.command_handler import execute_query_fetch_all
label_desc: Use image node_id 5 for calling the FunctionExecutorTest obj's underlying member method code with example usage: obj.test_create_function() without return types