code: def pipeline_runner():
      invalid_pipeline_obj = TestPipelineInvalid()
      for func in dir(TestPipelineInvalid):
          if not func.startswith("__"):
              print("Testing %s" % func)
              res = methodcaller(func)(invalid_pipeline_obj)
              if res is None:
                  print("%s PASS" % func)
              else:
                  print("%s FAIL" % func)
  
      pipeline_names = pipeline_register()
      for pipeline_name in pipeline_names:
          valid_pipeline_obj = TestPipelineValid()
          for func in dir(TestPipelineValid):
              if not func.startswith("__"):
                  print("Testing %s:%s" % (func, pipeline_name))
                  res = methodcaller(func, pipeline_name)(
                      valid_pipeline_obj
                  )
                  if res is None:
                      print("%s:%s PASS" % (func, pipeline_name))
                  else:
                      print("%s:%s FAIL" % (func, pipeline_name))
      return True
  
file_path: towhee/tests/testcases/test_main.py
imports: from operator import methodcaller
  from test_image_embedding import *
  from test_data_collection import *
  from test_command import *
label_desc: Use image node_id 2 for calling a global function with example usage: pipeline_runner() and returns: True