class_docstr: PipelineManager Test
class_docstr_tok: ["PipelineManager","Test"]
docstr: _input[(a, b, c)]->op1[(a, b)-(d,)]->op3(concat)->_output[(d, e)]
              |------>op2[(c,)-(e,)]----^
docstr_tok: ["_input","[","(","a",",","b",",","c",")","]","-",">","op1","[","(","a",",","b",")","-","(","d",",",")","]","-",">","op3","(","concat",")","-",">","_output","[","(","d",",","e",")","]","|","--","--","--",">","op2","[","(","c",",",")","-","(","e",",",")","]","--","--","^"]
code: def test_concat(self):
      """
      _input[(a, b, c)]->op1[(a, b)-(d,)]->op3(concat)->_output[(d, e)]
                  |------>op2[(c,)-(e,)]----^
      """
      towhee_dag_test = copy.deepcopy(self.dag_dict)
      towhee_dag_test["_input"]["next_nodes"] = ["op1", "op2"]
      towhee_dag_test["op1"]["next_nodes"] = ["op3"]
      towhee_dag_test["op2"]["next_nodes"] = ["op3"]
      towhee_dag_test["op3"] = {
          "inputs": (),
          "outputs": (),
          "iter_info": {"type": "concat", "param": None},
          "op_info": {
              "operator": "concat",
              "type": "built_in",
              "init_args": None,
              "init_kws": None,
              "tag": None,
          },
          "next_nodes": ["_output"],
      }
      runtime_pipeline = RuntimePipeline(towhee_dag_test)
      result = runtime_pipeline(2, 2, -10).get()
      self.assertEqual(result[0].diff, 0)
      self.assertEqual(result[1].sum, 0)
  
imports: import copy
  import weakref
  import unittest
  from towhee import pipe
  from towhee.operator import PyOperator
  from towhee.tools.data_visualizer import DataVisualizer
  from towhee.tools.profilers import PerformanceProfiler
  from towhee.runtime.runtime_pipeline import RuntimePipeline
  from towhee.runtime.operator_manager import OperatorRegistry
label_desc: Use image node_id 7 for calling the TestPipelineManager obj's underlying member method code with example usage: obj.test_concat() without return types